더보기
Option Explicit
Sub 기초방35()
Dim rngAll As Range: Set rngAll = [d7:d19] '= 표1 영역
Dim rnga As Range
Dim rngT As Range: Set rngT = [f7:f16] '= 표2 영역
Dim rngB As Range
Dim Vtemp, V(9)
Dim i&, j&, num&, sumN&, cnt&
Dim str$
Haja_format '= 초기화
rngT.Resize(rngT.Rows.Count, 2).Copy [i7] '= 결과 열에 표2 복사
For Each rnga In rngAll '= 표1 순환
Vtemp = Split(rnga, ",") '= 콤마로 분리 후 임시배열에 담음
For i = LBound(Vtemp) To UBound(Vtemp) '= 임시 배열 순환
For Each rngB In rngT
If InStr(rnga, rngB) > 0 Then
If InStr(Vtemp(i), rngB) = 0 Then
V(cnt) = Vtemp(i)
End If
End If
Next rngB
sumN = CLng(Replace(Split(Trim(Vtemp(i)), " ")(1), "개", "")) '= 분리된 것 중 숫자만 분리
num = Application.Match(Split(Trim(Vtemp(i)), " ")(0), rngT, 0) '= 표2와 비교하여 해당 물품의 위치를 파악
Cells(num + 6, "l") = Cells(num + 6, "l") + sumN '= [합계] 표의 수량 부분에 각 물품의 수량을 누적
Cells(num + 6, "n") = Cells(num + 6, "j") * Cells(num + 6, "l") '= 물품의 수량과 누적해가는 수량의 곱을 구함
Haja_Delay Cells(num + 6, "N"), rnga '= 딜레이효과를 주는 코드
Vtemp(i) = num & "_ " & Trim(Vtemp(i))
Next i
Next rnga
MsgBox "완료하였습니다."
End Sub
Function Haja_format()
[q7:q19].Copy [d7]
[i7:j16].ClearContents
[l7:l16].ClearContents
End Function
Function Haja_Delay(rngX As Range, rnga As Range)
Dim i&
For i = 1 To 50
rngX(1, -4).Resize(1, 6).Font.Bold = True
rnga.Interior.ColorIndex = 6
Next i
rngX(1, -4).Resize(1, 6).Font.Bold = False
rnga.Interior.ColorIndex = xlNone
End Function
'VBA > 엑사남_기초방' 카테고리의 다른 글
[기초방] VBA 100제 #37 [ Characters ] (0) | 2023.03.06 |
---|---|
[기초방] VBA 100제 #36 [ 가로정렬하기 ] (0) | 2023.03.05 |
[기초방] VBA 100제 #34 [ 상위5그룹 합계 ] (0) | 2023.03.05 |
[기초방] VBA 100제 #33 [ 칸트 차트만들기 ] (0) | 2023.03.05 |
[기초방] VBA 100제 #32 [ 이름조합하기 ] (0) | 2023.02.15 |
댓글