【问题标题】:How to find corresponding matching pairs in two columns in Excel?如何在Excel中的两列中找到对应的匹配对?
【发布时间】:2018-03-07 05:49:37
【问题描述】:

我有 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

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

【问题讨论】:

  • 你如何定义“匹配”?预期的结果是什么?你想在哪里看到结果?
  • @Variatus 我编辑了问题。

标签: excel duplicates vba


【解决方案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】:

    在第三列中使用这种公式怎么样?

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

    【讨论】:

    • 也许在公式中包含分隔符会很聪明。数据中没有出现的东西。例如。 =IF(A1&lt;B1,A1&amp;"/"&amp;B1, B1&amp;"/"&amp;A1)。否则 ab, x 和 a, bx 将最终成为相同的“唯一”值。
    【解决方案3】:

    谢谢大家的回答。

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

    我首先在第三列 (C2) 的第一个单元格中写了一个“匹配”。然后我根据扩展的 VLOOKUP 在下一个单元格 (C3) 中编写了这个公式

    =IF(ISNONTEXT(VLOOKUP(B3,$A$1:C2,3,0)),"match","")
    

    我基本上在第二列中搜索当前值,如果它在第一列中的对应值在第三列中有匹配项。如果不是,则放置“匹配”

    这样我在第三列的唯一值前面就有了“匹配”,这让我很容易进一步操作。

    【讨论】:

      猜你喜欢
      • 2013-11-09
      • 2011-06-28
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      相关资源
      最近更新 更多