2015-01-11 3 views
0

Excel의 워크 시트에서 3 열 전체에 걸쳐 많은 양의 데이터가 분산되어 있습니다. 각 열의 동일한 값을 & B와 일치시키고 B 열에 연결된 값을 각각의 B 구성 요소와 나란히 유지하려고합니다.세 번째 열의 값을 유지하면서 두 열의 동일한 데이터 정렬 Excel

내가 달성하기 위해 찾고 무엇

A B C 
1 a g ' 
2 b h * 
3 c a ? 
4 d e $ 
5 e b /
6 f j ) 
7 g c # 
8 h d @ 
9 i 
10 j 

안좋다 무엇 : 예를 들면 다음과 같습니다

A B C 
1 a a ? 
2 b b /
3 c c # 
4 d d @ 
5 e e $ 
6 f 
7 g g ' 
8 h h * 
9 i 
10 j j ) 

이 코드를 찾았지만, 그것은 또한 3 열 이상 수행하지 않습니다 값.

Sub Macro1() 
    Dim rng1 As Range 
    Set rng1 = Range([a1], Cells(Rows.Count, "A").End(xlUp)) 
    rng1.Offset(0, 1).Columns.Insert 
    With rng1.Offset(0, 1) 
     .FormulaR1C1 = _ 
     "=IF(ISNA(MATCH(RC[-1],C[1],0)),"""",INDEX(C[1],MATCH(RC[-1],C[1],0)))" 
     .Value = .Value 
    End With 
End Sub 

모든 도움을 주시면 감사하겠습니다. 감사

답변

1

그런 다음, (변형 배열이 적절한 것 같다) 메모리에 값을 저장 값을 취소하고 A1을 통해 일을해야합니다 : A10은 배열의 첫 번째 순위에 일치를 찾고.

Sub aaMacro1() 
    Dim i As Long, j As Long, lr As Long, vVALs As Variant 
    With ActiveSheet 
     lr = .Cells(Rows.Count, 1).End(xlUp).Row 
     vVALs = Range("B1:C" & lr) 
     Range("B1:C" & lr).ClearContents 
     For i = 1 To lr 
      For j = 1 To UBound(vVALs, 1) 
       If vVALs(j, 1) = .Cells(i, 1).Value Then 
        .Cells(i, 2).Resize(1, 2) = Application.Index(vVALs, j) 
        Exit For 
       End If 
      Next j 
     Next i 
    End With 
End Sub 

은 B1에서 값을 제거처럼 당신이 당신의 데이터의 복사본이 테스트 경우는 아마 가장 좋은 것입니다 : C10 그들을 반환하기 전에.

관련 문제