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

时间:2017-01-27 00:01:40

标签: 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   |                 |
| F    | B_2   |                 |
| D    | B_2_A | D_1_A           |
| G    | A_3   |                 |
+------+-------+-----------------+
  1. 指定COL1
  2. 的每个单元格中的值
  3. COL2中,找到包含COL1
  4. 中值的所有单元格
  5. COL3中,在与COL1的行索引匹配的单个单元格中,返回COL2中包含COL1 <中单元格值的所有单元格值/ LI>

    这个问题的措辞令人困惑,但我希望这个表更有意义。我尝试了很多IF,SEARCH,INDEX和VLOOKUP函数,但未能正确执行此操作。请注意,列表不是以任何特定顺序排列的(我不能按字母顺序列出它,因为单元格值中的下划线会弄乱工作簿中的其他公式)。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

如果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

然后你会使用这样的函数: 在Col3中放了这个公式

=ConStr(B$1:B$7,A1)

并根据需要向下拖动。

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

相关问题