왼쪽에 공급업체와 업체별 제품이름이 하나씩 나열되어있고
버튼을 누르면
중복된 공급업체명을 하나만 나타내고 업체별 제품명을 출력하는 매크로입니다.
Dictionary를 사용해 중복된 공급업체를 없애고 업체별 제품명을 기록합니다.
Option Explicit Sub ConcatIf() Dim dict As Object Dim v, i As Long Application.ScreenUpdating = False Set dict = CreateObject("Scripting.Dictionary") 'Dictionary를 선언합니다. v = Range("A1").CurrentRegion.Value '표에 있는 데이터를 배열에 삽입합니다. '공급업체 및 업체별 제품이름을 Dictionary에 넣습니다. '공급업체는 유일값으로서 Keys에, 공급업체별 제품이름은 Items에 넣습니다. With dict For i = 1 To UBound(v, 1) If v(i, 1) <> vbNullString Then If .exists(v(i, 1)) Then .Item(v(i, 1)) = .Item(v(i, 1)) & ", " & v(i, 2) Else .Add Key:=v(i, 1), Item:=CStr(v(i, 2)) End If End If Next i 'E~F열에 공급업체 및 공급업체별 제품을 출력합니다. If .Count Then With Range("E1").Resize(.Count, 2) .EntireColumn.ClearContents .Value2 = Application.Transpose(Array(dict.keys, dict.items)) .EntireColumn.AutoFit End With End If End With Set dict = Nothing Application.ScreenUpdating = True End Sub | cs |
'VB(A)' 카테고리의 다른 글
UTF-8 형식의 텍스트파일 불러오기 (0) | 2019.03.19 |
---|---|
[정규식] 일정한 패턴의 숫자만 가져오기 (0) | 2019.03.18 |
한 셀에서 중복제거후 정렬 (0) | 2019.03.17 |
특정 글자색 추려내기 (0) | 2019.03.16 |
같은 글자색의 숫자 더하기 (0) | 2019.03.15 |