정렬되지 않은 이름들을 순환하면서 각 그룹을 만드는 구문이다.
하나의 시트로만 작업을 해왔던 분들이면 다중 시트를 생성하면서 작업하는 것이 낯설 수도 있다. 실무에서도 많이 사용되는 구문이기에 하나씩 잘 정리하길 바란다.
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = rngX
참 고급스킬이다. 시트를 추가하는 데 그 위치는 현재 생성된 시트들의 맨 뒤에 시트를 추가하고, 그 이름을 특정 변수 값으로 하는 내용이다. 반드시 숙지하길 바란다.
Cells(Rows.Count, "b").End(3)(2).Resize(1, 2) = Array(rngA, rngA.Next)
여기서 Array를 주목해보자.
Array 안 썼다면 아래와 같이 각각을 분리하여 작성하여야 한다.
Cells(Rows.Count, "b").End(3)(2) = rngA
Cells(Rows.Count, "c").End(3)(2) = rngA.Next
실무에 적용하여 월급루팡이 되어보자....
더보기
Option Explicit
Sub 기초방26()
Dim rngAll As Range: Set rngAll = Sheets("통합").[a5].CurrentRegion
Dim rngA As Range
Dim sh As Worksheet
Dim rngX As Range: Set rngX = Sheets("통합").[f6]
rngAll.Copy [f5] '= 기초방 26번문제
[f5].CurrentRegion.RemoveDuplicates 1, 1
[g6:g11] = "=SUMIFS($B$6:$B$496,$A$6:$A$496,F6)" '= 기초방 26번문제
Do Until IsEmpty(rngX) '= 추출된 이름들은 순환해라
Sheets.Add after:=Sheets(Sheets.Count) '= 시트를 추가는 현재 시트수의 다음번째에 추가해라
ActiveSheet.Name = rngX '= 시트 이름은 추출된 이름으로 해라
Sheets("통합").[a5:b5].Copy ActiveSheet.[b5] '= 시트안에 이름/매출 헤드를 복사 붙혀넣기 해라
For Each rngA In rngAll.Columns(1).Cells '= 통합 시트에 있는 이름들은 순환해라
If rngA = rngX Then '= 추출된 이름과 통합시트의 이름과 일치하면
Cells(Rows.Count, "b").End(3)(2).Resize(1, 2) = Array(rngA, rngA.Next) '= 생성된 시트에 누적으로 추출해라
End If
Next rngA
Haja_Format
Set rngX = rngX.Offset(1)
Loop
Sheets("통합").Activate '= 통합시트로 이동
MsgBox "추출완료"
End Sub
Function Haja_Format()
Columns("c").NumberFormat = "#,##0"
With [b5].CurrentRegion
.Borders.LineStyle = 1
.HorizontalAlignment = xlCenter
End With
End Function
'VBA > 엑사남_기초방' 카테고리의 다른 글
[기초방] VBA 100제 #27 [ 미납자 확인 ] (2) | 2023.02.05 |
---|---|
[기초방] VBA 100제 #26_1 [ 그룹별 목차 만들기 ] (0) | 2023.02.05 |
[기초방] VBA 100제 #25 [ 병합셀 다루기 ] (0) | 2023.02.02 |
[기초방] VBA 100제 #24 [ 멀티 필터링 ] (2) | 2023.02.01 |
[기초방] VBA 100제 #23 [ 제품 나열하기 ] (0) | 2023.01.31 |
댓글