앞으로 포스팅할 내용들은 365 함수와 연계하여 작성 하도록 하려고 한다.
중요한 이유는 VBA보다는 엑셀 함수를 사용하여 짧고 빠르게 해결할 수 있는 문제들이기 때문이다.
본인이 아무리 코드를 줄인다고 해도, 막강한 365 함수를 이겨낼 수 없다.
기초방 67번같은 경우,
각 상품의 날짜와 품목을 키로 하여 각각의 판매 합계와 갯수, 평균, 최대 최소값을 구하는 것인데.
일반적으로 이러한 문제를 접근하기 위해서는 앞서 공개한 크루들의 코드처럼 엑셀 함수로 푸는것이 정석이고 정답이라고 말하고 싶다.
코드 자체는 엑셀 함수 기반이라서 큰 어려움은 없을 것이다.
더보기
Option Explicit
Sub 기초방67()
Dim rngAll As Range: Set rngAll = [a5].CurrentRegion
Dim rngX As Range: Set rngX = [f6]
Dim vtemp, result, rowv
Dim List As Range, Key1 As Range, Key2 As Range
Dim i&
With Application
On Error Resume Next
ActiveSheet.ListObjects(1).Unlist '= 표개체 삭제
On Error GoTo 0
ActiveSheet.ListObjects.Add(1, rngAll).Name = "Table1" '= 표설정
ActiveSheet.ListObjects(1).TableStyle = "TableStyleMedium5"
[f5].Resize(1, 7) = Array("날짜", "상품", "매출", "판매횟수", "평균", "최대값", "최소값")
vtemp = .Unique(ActiveSheet.ListObjects("Table1").DataBodyRange.Columns("A:B"))
vtemp = .SortBy(vtemp, .Index(vtemp, , 1), 1, .Index(vtemp, , 2), 1)
Set List = Range("Table1[매출]")
Set Key1 = Range("Table1[날짜]")
Set Key2 = Range("Table1[상품]")
result = Array(.Index(vtemp, , 1), .Index(vtemp, , 2), _
.SumIfs(List, Key1, .Index(vtemp, , 1), Key2, .Index(vtemp, , 2)), _
.CountIfs(Key1, .Index(vtemp, , 1), Key2, .Index(vtemp, , 2)), _
.AverageIfs(List, Key1, .Index(vtemp, , 1), Key2, .Index(vtemp, , 2)), _
.MaxIfs(List, Key1, .Index(vtemp, , 1), Key2, .Index(vtemp, , 2)), _
.MinIfs(List, Key1, .Index(vtemp, , 1), Key2, .Index(vtemp, , 2)))
rowv = Application.Evaluate("ROW(1:" & UBound(vtemp, 1) & ")")
For i = 0 To 6
rngX.Resize(UBound(vtemp, 1), 1) = .Index(result(i), rowv, 1)
Set rngX = rngX.Offset(, 1)
Next i
End With
End Sub
result 배열에 하나씩 값들을 담아서 순차적으로 뿌려주는 구문이다.
이 글을 보는 사람에게 물어보려한다.
본인의 장황한 코드가 셀 하나에 모두 표기되는 365함수...
이게 본인이 365를 배워야 하는 이유라고 생각한다.
'VBA > 엑사남_기초방' 카테고리의 다른 글
[기초방] VBA 100제 #69 [ 테이블 순환하며 결합하기 ] (0) | 2023.10.02 |
---|---|
[기초방] VBA 100제 #68 [ 테이블 결합하기 ] (0) | 2023.10.01 |
[기초방] VBA 100제 #66 [ 문자열 정렬하기(feat. 배열정렬) ] (0) | 2023.09.21 |
[기초방] VBA 100제 #65 [ 유효성 검사를 통한 필터링 ] (0) | 2023.09.20 |
[기초방] VBA 100제 #64 [ 유효성 검사를 통한 총 수량 구하기 ] (0) | 2023.09.19 |
댓글