앞서 했던 정렬과는 달리
이번엔 별도의 시트에 순위가 정해져있다.
vlookup 함수를 이용해서 서로의 값을 비교해서 배열을 재정렬하는 매크로
Option ExplicitSub Macro() Dim vData() As Variant Dim vList As Variant Dim temp As Variant Dim i As Integer Dim r As Integer Dim rngData As Range Application.ScreenUpdating = False '연간판매자료 및 정렬기준표 변수 설정 Set rngData = Range("A5", Cells(Rows.Count, "A").End(xlUp)) With Sheets("정렬기준표") vList = .Range("A2", .Cells(Rows.Count, "B").End(xlUp)).Formula End With '각 제품 데이터를 변수에 삽입 For r = 1 To rngData.Rows.Count Step Range("A5").MergeArea.Rows.Count With Cells(4 + r, "A").MergeArea If .Columns.Count = 1 Then ReDim Preserve vData(i) vData(i) = .Resize(, 18).FormulaR1C1 i = i + 1 End If End With Next r '정렬기준표에 따라 순위별로 정렬 For i = 0 To UBound(vData) - 1 For r = i + 1 To UBound(vData) If WorksheetFunction.VLookup(vData(i)(1, 2), vList, 2, 0) > WorksheetFunction.VLookup(vData(r)(1, 2), vList, 2, 0) Then temp = vData(r) vData(r) = vData(i) vData(i) = temp End If Next r Next i '순위별로 정렬된 배열을 셀에 뿌림 i = 0 For r = 1 To rngData.Rows.Count Step Range("A5").MergeArea.Rows.Count With Cells(4 + r, "A").MergeArea If .Columns.Count = 1 Then .Resize(, 18) = vData(i) i = i + 1 End If End With Next r Application.ScreenUpdating = TrueEnd Sub cs
'VB(A)' 카테고리의 다른 글
동일한 양식의 여러 엑셀파일 취합 (0) | 2015.07.27 |
---|---|
중복된 것은 표시해주면서 하나만 뿌림 (0) | 2015.07.27 |
다른 엑셀파일의 데이터 가져오기 (2) | 2015.05.16 |
한글로 된 텍스트파일 불러오기 (0) | 2015.05.16 |
2중 VLOOKUP (0) | 2015.05.15 |