如何返回多个匹配结果并将它们作为连接文本输出到单元格?

如何返回多个匹配结果并将它们作为连接文本输出到单元格?

假设我有以下数据:

A C
1 值1 字符串1
2 缬氨酸 Str2
3 值2 Str3
4 缬氨酸 Str4
5 缬氨酸 Str5
6 值3 Str6
7 缬氨酸 Str7
8 值4 Str8
9 值5 Str9
10 缬氨酸 Str10

我想:

  1. 查找ValMA 列中存在的所有匹配项
  2. 对于步骤 1 中找到的每个值,获取 B 列中对应的行值
  3. 使用步骤 2 中连接的文本填充单元格(例如 D1)

也就是说,我想要这样的输出:

A C
1 值1 字符串1 Str2、Str4、Str5、Str7、Str10
2 缬氨酸 Str2
3 值2 Str3
4 缬氨酸 Str4
5 缬氨酸 Str5
6 值3 Str6
7 缬氨酸 Str7
8 值4 Str8
9 值5 Str9
10 缬氨酸 Str10

是否可以使用 LibreOffice Calc 实现该功能(无需使用宏)?如果可以,如何实现?

注意:我尝试使用带有 INDEX、MATCH 和 TEXTJOIN 的数组函数,但没有成功。

更新

以及如何在单元格 D1 中输出类似列表的内容(而不是以逗号分隔的列表)?

D1单元格列表式内容:

- Str2
- Str4
- Str5
- Str7
- Str10

答案1

在公式栏中键入以下公式:

=TEXTJOIN(", ",TRUE(), IF(A1:A10="valm",B1:B10,""))

完成输入后,将光标放在公式栏中,按CTRL+ SHIFT+ Enter。花括号将包围公式,如下图所示。

结果

关于问题的更新部分,您需要稍微更改公式。分隔符将是使用CHAR函数的新行,并将文本/字符串连接-到输出范围。公式将更改为:

=TEXTJOIN(CHAR(10),TRUE(), IF(A1:A10="valm","- " & B1:B10,""))

CTRL++输入前面提到SHIFTEnter公式

更新问题的结果

答案2

这是 excel 版本。我这里没有使用过滤函数,因此您可以使用++Ctrl进行数组计算。如果 libreoffice 使用单独的函数进行数组计算(如 G Sheet ),您可能需要使用它。ShiftEnterArrayFormula

=TEXTJOIN(",",TRUE,IFERROR(INDEX(C1:C10, FIND("ValM", B1:B10)*ROW(B1:B10)), ""))

这是我在 G-Sheets 上看到的

=ArrayFormula(TEXTJOIN(",", TRUE, IFERROR(VLOOKUP(IFERROR(FIND("ValM", B1:B10)*ROW(B1:B10), ""), A1:C10, 3), "")))

相关内容