Excel 在另一个单元格中查找包含特定文本的所有单元格,然后在与指定单元格相同的行的另一列中返回这些单元格

Excel 在另一个单元格中查找包含特定文本的所有单元格,然后在与指定单元格相同的行的另一列中返回这些单元格,excel,if-statement,search,indexing,Excel,If Statement,Search,Indexing,我需要在Excel中找到一种方法来执行以下操作: +------+-------+-----------------+ | COL1 | COL2 | Col3 | +------+-------+-----------------+ | A | A_1 | A_1, A_2, A_3 | | C | A_2 | | | B | D_1_A | B_1, B_2, B_2_A | | E | B_1

我需要在Excel中找到一种方法来执行以下操作:

+------+-------+-----------------+
| COL1 | COL2  |      Col3       |
+------+-------+-----------------+
| A    | A_1   | A_1, A_2, A_3   |
| C    | A_2   |                 |
| B    | D_1_A | B_1, B_2, B_2_A |
| E    | B_1   |                 |
| F    | B_2   |                 |
| D    | B_2_A | D_1_A           |
| G    | A_3   |                 |
+------+-------+-----------------+
  • 指定
    COL1
  • COL2
    中,查找包含
    COL1
    中的值的所有单元格
  • COL3
    中,在与
    COL1
    行索引匹配的单个单元格中,返回
    COL2
    中包含
    COL1
    中单元格值的所有单元格值

  • 这个问题的措词令人困惑,但我希望这张表更有意义。我尝试了大量的IF、SEARCH、INDEX和VLOOKUP函数,但都没有正确执行。请注意,该列表没有任何特定的顺序(我无法按字母顺序列出,因为单元格值中的下划线会弄乱工作簿中的其他公式)。任何帮助都将不胜感激

    如果VBA是一个选项,那么您可以编写自己的UDF,它可以实现您希望实现的目标

    将此复制到模块中:

    Function ConStr(a As Range, b As Range) As String
    
    Dim r As Range
    
    For Each r In a
        If r.Value <> "" And Left(r.Value, 1) = b.Value Then
            If ConStr = "" Then
                ConStr = r.Value
            Else
                ConStr = ConStr & " " & r.Value
            End If
        End If
    Next r
    
    End Function
    
    并尽可能向下拖动


    如果VBA不是一个选项,那么Scott已经指出了正确的方向。

    对于COL3,您将需要Office 365 excel,在Col2和辅助列(或VBA)上对数据进行排序。
    =ConStr(B$1:B$7,A1)