问题描述
我有这张桌子:
在单元格 A4 上,我想要值“橙色”。我只想取橙色标记的三个水果列的摘要:
- 表格格式(所以我需要 [@Fruit 1]、[@Fruit 2]、[@Fruit 3],而不是单元格 B2、E2、H2)
- 仅水果列之间由不相关的价格和重量列分隔。
- 没有重复(所以 Fruit 1: Apple & Fruit 2: Apple 2 变成只是“Apple”而不是“Apple,Apple”)
- 没有空格(所以第 4 行将是“橙色”而不是“橙色”)
将不胜感激任何帮助。
解决方法
您包含 textjoin
标记是正确的,因为这是您将需要使用的。
像这样:=TEXTJOIN(",",TRUE,[@Fruit 1],IF([@Fruit 1] = [@Fruit 2],"",[@Fruit 2]),IF(OR([@Fruit 1] = [@Fruit 3],[@Fruit 2] = [@Fruit 3]),[@Fruit 3]))
。
Textjoin
公式中的第二个参数将其设置为忽略空值。如果 IF 公式的值已显示在前一列中(即 Fruit 2 检查 Fruit 1,Fruit 3 同时检查 Fruit 1 和 2 列),则 IF 公式将返回空值。
如果您有 Excel365
,请使用以下公式。
=TEXTJOIN(",UNIQUE(FILTERXML("<t><s>"&TEXTJOIN("</s><s>",Table1[@])&"</s></t>","//s[translate(.,'1234567890','')=.]")))
,
假设您的表格名为Tbl_Fruit
,在单元格A2
中,您可以输入以下公式并向下拖动:
=TEXTJOIN(",UNIQUE(INDEX(Tbl_Fruit[[Fruit 1]:[Fruit 3]],ROW()-1,{1;4;7})))
或者,您可以在 A2
中输入以下公式:
=TEXTJOIN(",UNIQUE(TRANSPOSE(INDEX(FILTER(Tbl_Fruit[[Fruit 1]:[Fruit 3]],LEFT(Tbl_Fruit[[#Headers],[Fruit 1]:[Fruit 3]],5)="Fruit"),ROW()-1))))