假设我有以下数据:
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 |
我想:
- 查找
ValM
A 列中存在的所有匹配项 - 对于步骤 1 中找到的每个值,获取 B 列中对应的行值
- 使用步骤 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
答案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), "")))