如何在Excel中的两列中找到相应的匹配对?

时间:2017-09-26 06:17:09

标签: excel excel-vba duplicates vba

我有2列包含此格式的数据:

ColA ColB
a      x
b      y
c      z
x      a
y      b
z      c

我很难过滤匹配对,例如值a,x和x,a。 任何帮助将不胜感激!

编辑:

理想情况下,我希望第三列具有每对的唯一值,例如

ColA ColB ColC
a      x     1
b      y     2
c      z     3
x      a     1
y      b     2
z      c     3

这样我就可以过滤掉它们或快速完成数据透视表。

3 个答案:

答案 0 :(得分:1)

如何在第三栏中使用这种公式?

=IF(A1<B1,A1 & B1, B1 & A1)

答案 1 :(得分:1)

请试一试......

Sub PairCount()
Dim x, y(), dict
Dim i As Long, cnt As Long
x = Range("A1").CurrentRegion.Value
ReDim y(1 To UBound(x, 1))
Set dict = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(x, 1)
    If Not dict.exists(x(i, 1) & x(i, 2)) Or Not dict.exists(x(i, 2) & x(i, 1)) Then
        cnt = cnt + 1
        dict.Item(x(i, 1) & x(i, 2)) = cnt
        dict.Item(x(i, 2) & x(i, 1)) = cnt
    End If
Next i
For i = 1 To UBound(x, 1)
    y(i) = dict.Item(x(i, 1) & x(i, 2))
Next i
Columns(3).Clear
Range("C1").Resize(UBound(y)).Value = Application.Transpose(y)
Set dict = Nothing
End Sub

答案 2 :(得分:0)

谢谢大家的回答。

我刚用一种简单的半自动方式解决了这个问题:

我首先写了一个&#34;匹配&#34;在第三列(C2)的第一个单元格中。然后我根据扩展的VLOOKUP

在下一个单元格(C3)中编写了这个公式
=IF(ISNONTEXT(VLOOKUP(B3,$A$1:C2,3,0)),"match","")

如果第一列中的对应值在第三列中匹配,我基本上会搜索第二列中的当前值。如果没有,请放置&#34;匹配&#34;

这样我就可以&#34;匹配&#34;在独特值前面的第三列,这使我很容易进一步操作。