|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 엑셀 버전(95,97,2000,xp,2003,2007):offce365
* 아래줄에 질문을 작성하세요 >>
안녕하세요.
요즘 엑셀공부를 하는 중인데, 혼자서는 해결이 안되서 질문 드립니다.
이름이 비슷한 품목(뒷자리 숫자만 다름)들과 수량 데이터가 있는데,
1. 뒷자리 숫자가 가장 큰 문자만 다른 셀에 표기하되
2. 수량에는 이름이 비슷한 모든 품목의 합을 표기했으면 합니다.
(비슷한 이름이 없는 단독품목은 그대로 다른 셀에 함께 표기)
예제와 설명을 첨부하였으니 방법을 가르쳐주시면 감사하겠습니다.
==============[김현동님 글에 대한 답변입니다]==============
첨부화일 참고하세요.
Sub getDesiredValue()
Dim rData As Range, rRow As Range
Dim rTG As Range
Dim oDIc As Object
Dim lKey As Long, lSum As Long
Dim vKey, vContent, vTemp
'원본데이터
Set rData = Range("A3:B" & Cells(Rows.Count, 1).End(xlUp).Row)
'원하는 값 가져올 위치
Set rTG = Range("D14")
rTG.CurrentRegion.Offset(1).Clear ' 초기화
Set oDIc = CreateObject("Scripting.Dictionary")
For Each rRow In rData.Rows
vTemp = rRow.Cells(1, 1)
vKey = Left(vTemp, Len(vTemp) - 2)
lKey = Val(Right(vTemp, 2))
lSum = rRow.Cells(1, 2)
If oDIc.Exists(vKey) Then
vContent = oDIc(vKey)
If vContent(0) < lKey Then vContent(0) = lKey
vContent(1) = vContent(1) + lSum
oDIc(vKey) = vContent
Else
vContent = Array(lKey, lSum)
oDIc.Add vKey, vContent
End If
Next
For Each vKey In oDIc.keys
rTG.Cells(1, 1) = vKey & oDIc(vKey)(0)
rTG.Cells(1, 2) = oDIc(vKey)(1)
Set rTG = rTG.Offset(1)
Next
oDIc.RemoveAll
Set oDIc = Nothing
End Sub
|
|