13

これは私には答えられない簡単な質問です。

Excel に次のような 2 つの列があります。

Col1    Col2
 A       C
 B       I
 C       E
 D       D
 E       A
 F       F
 G       B
 H       
 I       

次のように、2 つの列を並べ替えて、同じ値が 2 つの列の同じ行に配置されるようにします。

Col1    Col2
 A       A
 B       B
 C       C
 D       D
 E       E
 F       F
 G       
 H       
 I       I
 K       

これまでのところ、次のVBAコードを試しました。

 Sub HighlightDups()
    Dim i, LastRowA, LastRowB
    LastRowA = Range("A" & Rows.Count).End(xlUp).Row
    LastRowB = Range("B" & Rows.Count).End(xlUp).Row
    Columns("A:A").Interior.ColorIndex = xlNone
    Columns("B:B").Interior.ColorIndex = xlNone
    For i = 1 To LastRowA
        If Application.CountIf(Range("B:B"), Cells(i, "A")) > 0 Then
            Cells(i, "A").Interior.ColorIndex = 36
        End If
    Next
    For i = 1 To LastRowB
        If Application.CountIf(Range("A:A"), Cells(i, "B")) > 0 Then
            Cells(i, "B").Interior.ColorIndex = 36
        End If
    Next
End Sub

しかし、このコードは重複を見つけるのに役立つだけで、2 つの列の同じ行に重複を配置することはできません。

皆さん、少し手伝っていただけないでしょうか?

どうもありがとう。

4

2 に答える 2

38

VBAなし

  • 列 B に空白の列を挿入する
  • B1に置い=IF(ISNA(MATCH(A1,C:C,0)),"",INDEX(C:C,MATCH(A1,C:C,0)))てコピーする
  • 数式を削除するための値として、列 B をコピーしてそれ自体の上に貼り付けます。

VBAで

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
于 2012-10-11T09:32:49.447 に答える
-1

VBA なし

  • C1 put =VLOOKUP(A:A,B:B,1)
  • 複数の列がある場合、E1 put =VLOOKUP(A:A,B:D,2) .... 最後の桁は 1(col B), 2(col C) 3(Col D) に変更する必要があります。

探している配列ごとにこれをコピーして別々の列に貼り付ける必要がありますが、列を簡単にコピーして貼り付けることができるはずです

お役に立てれば。ご不明な点がございましたら、お知らせください

于 2016-01-11T21:00:00.267 に答える