【问题标题】:Excel Match FunctionExcel 匹配函数
【发布时间】:2017-10-26 12:32:18
【问题描述】:

我的工作表有两列:Column AColumn B

Column A 有一个名称列表,Column B 有它们对应的值。

列表中的某些项目 (Column A) 在 Column B 中具有不同值的重复项。

我想要做的是删除Column A 中的重复项,并且每个项都只有一个,并且它们的所有对应值都在一个单元格中。

示例:

Colmn A      Column B                     Column A      Column B
Apple           7                         Apple            7, 1
Orange          2         will be         Orange           2   
Apple           1

我正在使用下面的公式,但它给了我一个#NAME? 错误:

=IF(MATCH(A2,A:A,0), contenate(B:B))

谁能告诉我我做错了什么?

【问题讨论】:

  • @musefan 公式可以作为这里的代码。
  • @user3490456 Match 只返回找到的第一个,如果没有找到会抛出错误。如果你想要这个,你将需要 vba。如果您想使用复制/粘贴/删除重复项在另一列中创建唯一列表,那么如果您有 OFFICE 365 Excel,则可以使用 TEXTJOIN。否则它也需要 vba。
  • @user3490456 要获得您的输出,您需要第三列或 VBA imo。
  • 至于为什么您会收到 NAME 错误 contenate(B:B) 应该是 CONCATENATE(B:B) 但正如我所说,这不起作用。如果 MATCH 没有出错,它将返回 B 的整个列的连接,而不仅仅是 A 列与 A2 匹配的那些。

标签: excel excel-formula excel-match


【解决方案1】:

这个简短的宏会将结果放在 DE 列中:

Sub Macro1()
    Dim M As Long, N As Long, rc As Long
    Dim i As Long, j As Long, v As String
    rc = Rows.Count

    Columns("A:A").Copy Columns("D:D")
    Range("D:D").RemoveDuplicates Columns:=1, Header:=xlNo
    M = Cells(rc, 1).End(xlUp).Row
    N = Cells(rc, 4).End(xlUp).Row

    For i = 1 To N
        v = Cells(i, 4)
        For j = 1 To M
            If Cells(j, 1) = v Then
                If Cells(i, 5) = "" Then
                   Cells(i, 5) = Cells(j, 2)
                Else
                    Cells(i, 5) = Cells(i, 5) & "," & Cells(j, 2)
                End If
            End If
        Next j
        Next i

End Sub

例如:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2021-08-12
    • 2019-02-15
    • 2021-04-04
    相关资源
    最近更新 更多