Excel -查找多列中的重复值

ev7lccsx  于 2023-01-27  发布在  其他
关注(0)|答案(2)|浏览(173)

我有一个包含三个不同用户的电话号码的数据集。每个用户在Excel中都有自己的列。例如,Alice调用了A:A中的号码,Bob调用了B:B中的号码,Carol调用了C:C中的号码(每个列的长度不同)。
我正在尝试确定所有3个电话号码都打过的电话号码。我已经使用unique从每个列表中筛选出重复的值,并且我知道如何使用条件格式查找两列中的重复值。但是如何查找只出现在所有三列中的值呢?
澄清:数据模型如下(我不能给出真实数据):
| 1个|小行星5656|小行星6464||||-———-|-————-|-————-|-—-|-—-||第二章|1个|四百五十六||||四百五十六|第二章|第二章||||三四五|八百|1个|||
我希望Excel通过三列查找所有3列的共同值,并突出显示它们。

jv4diomz

jv4diomz1#

假设输入数据在A2:C7范围内,您可以在E2中尝试以下公式:

=LET(rng, A2:C7, ux, UNIQUE(TOCOL(rng,1)),DROP(REDUCE("", ux, LAMBDA(ac, x, 
 LET(cmp, N(rng=x), ones, SEQUENCE(,ROWS(cmp),1,0), IF(SUM(MMULT(ones, cmp))=3, 
   VSTACK(ac,x), ac)))),1))

使用COUNTIFS可以实现简化方法

=LET(rng, A2:C7, ux, UNIQUE(TOCOL(rng,1)), FILTER(ux, COUNTIFS(rng,ux)=3))

下面是输入数据示例和相应的输出。* 突出显示 * 公式应返回的数字(请参阅下面的条件格式公式):

前面的解决方案假定输入区域rng)中每列没有重复的数字。在此假设下,您可以定义 * 条件格式 *,如下所示:

=SUM(N(A2=$A$2:$C$7))=3

如果在给定列中该数字可以重复,则可以如下调整第一公式:

=LET(rng, A2:C7, ux, UNIQUE(TOCOL(rng,1)),DROP(REDUCE("", ux, LAMBDA(ac,x,
  LET(cmp, N(rng=x), ones, SEQUENCE(,ROWS(cmp),1,0), 
    IF(SUM(N(MMULT(ones, cmp) >= 1))=3, VSTACK(ac,x), ac)))),1))

无论输入列的行数是多少,这两种解决方案都应该有效。TOCOL1)的第二个输入参数确保不考虑空单元格。

v7pvogib

v7pvogib2#

您将需要更改范围,我只使用3行来测试它。

Sub FindCommonNumbers()
    Dim dict As Object
    Dim rngAlice As Range, rngBob As Range, rngCarol As Range
    Dim cell As Range
    Dim phone As Variant
    ' Create a new dictionary object
    Set dict = CreateObject("Scripting.Dictionary")

    ' Set the range for each user's phone numbers
    Set rngAlice = Range("A1:A3")
    Set rngBob = Range("B1:B3")
    Set rngCarol = Range("C1:C3")

    ' Add the phone numbers from the first column to the dictionary
    For Each cell In rngAlice
        dict(cell.Value) = 1
    Next cell

    ' Check the phone numbers in the second column against the dictionary
    For Each cell In rngBob
        If dict.exists(cell.Value) Then
            dict(cell.Value) = dict(cell.Value) + 1
        End If
    Next cell

    ' Check the phone numbers in the third column against the dictionary
    For Each cell In rngCarol
        If dict.exists(cell.Value) Then
            dict(cell.Value) = dict(cell.Value) + 1
        End If
    Next cell

    ' Print the phone numbers that appear in all three columns
    For Each phone In dict.Keys()
        If dict(phone) = 3 Then
            Debug.Print phone
        End If
    Next phone
End Sub

相关问题