전체 기초데이터에서 조건에 맞는 데이터만 불러와서 명단(출석부 등) 동적 생성
기초데이터에서 조건에 맞는 데이터만 가져와서 명단(출석부, 등록부 등) 만들기 매크로
Sub Import()
Application.ScreenUpdating = False
'불러온 데이터부분 양식 범위를 초기화한다.
Range(Cells(4, 1), Cells(500, 8)) = ""
'numb, locat 변수 초기값 설정
numb = 1
locat = 4
'데이터가 있는 셀의 수를 계산하여 데이터가 있는 셀까지 For 문을 돌린다.
'MsgBox (Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row) 맨 마지막 셀까지 For 문
For i = 2 To Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
'조건은 시트2에 걸고, 불러올 기초데이터는 시트1에 있음. 6번째 열 i번째 행이 조건에 맞으면
If Sheets(2).Cells(3, 11) = Sheets(1).Cells(i, 6) Then
Sheets(2).Cells(locat, 1) = numb
Sheets(2).Cells(locat, 2) = Sheets(1).Cells(i, 7) '출신학교
Sheets(2).Cells(locat, 3) = Sheets(1).Cells(i, 2) '접수번호
Sheets(2).Cells(locat, 4) = Sheets(1).Cells(i, 3) '성명
Sheets(2).Cells(locat, 5) = Sheets(1).Cells(i, 1) '수험번호
Sheets(2).Cells(locat, 6) = Sheets(1).Cells(i, 9) '시험장명
Sheets(2).Cells(locat, 7) = Sheets(1).Cells(i, 10) '시험실
locat = locat + 1
numb = numb + 1
'End If
'End If
End If
Next i
' 모든 데이터를 불러온 후 이하 여백 표시
Sheets(2).Cells(locat, 2) = "- 이하 여백 -"
' 불러온 데이터 수를 알려줌
MsgBox (Sheets(2).Cells(3, 11) & "에서 접수한 " & locat - 4 & "명을 불러왔습니다.")
' 유동적으로 인쇄영역을 설정하기 위해 페이지 레이아웃 설정을 한다.
Dim PrintOutRange As String
PrintOutRange = "A1:H" & locat + 1
Dim MyPrintArea As Range
Set MyPrintArea = ActiveSheet.Range(PrintOutRange)
ActiveSheet.PageSetup.PrintArea = PrintOutRange
End Sub
'업무 활용 엑셀' 카테고리의 다른 글
엑셀 VBA 자료(학교명을 참석자수만큼 반복시키기) (0) | 2018.11.28 |
---|---|
엑셀 VBA 마지막 행과 열의 수 찾기 (0) | 2018.10.26 |
엑셀 문자열에서 숫자만 계산하기 (0) | 2018.10.26 |
엑셀에서 텍스트 문자열의 숫자를 제거하는 방법 (0) | 2018.10.18 |
엑셀에서 0 표시 없애기 (0) | 2018.10.09 |