我有一个表,从中提取唯一值的列表,然后我想提取它们的所有键并使用 textjoin 合并它们。但是过滤器函数将标准与单个值进行比较,而我希望标准查找整行。
在正常情况下,我只会坚持使用单个值并让它用表格拖动城镇,但在这种情况下,源是一个 Unique 函数,因此它不能是表格。
现在是:
A1:B6 is a Table called Table1
D1=UNIQUE(Table1[[#All],[Item]])
E2=TEXTJOIN($E$1, TRUE, FILTER(Table1[Key],Table1[Item]=D2))
E3=TEXTJOIN($E$1, TRUE, FILTER(Table1[Key],Table1[Item]=D3))
E4=TEXTJOIN($E$1, TRUE, FILTER(Table1[Key],Table1[Item]=D4))
但数据是动态的,所以我不能继续执行 D5、D6 等,而且我也不想只是向下拖动未使用的单元格,因为它会减慢文件速度。
所以我正在寻找类似E2 =TEXTJOIN($E$1, TRUE, FILTER(Table1[Key],Table1[Item]= D:D )) 的东西加上仅适用于非空 D 单元格,所以结果将是无需将公式放入 E3、E4 等中:
A | 乙 | C | D | 乙 | |
---|---|---|---|---|---|
1 | 物品 | 钥匙 | 物品 | , | |
2 | 富 | dfgsd | 富 | dfgsd,6456hfghd | |
3 | 酒吧 | 广东省 | 酒吧 | gdfghsh、fuibdgdb | |
4 | 富 | 6456hfghd | 某物 | dsfkgjlcb | |
5 | 某物 | dsfkgjlcb | |||
6 | 酒吧 | 数据库数据库 |
是否可以?请参阅类似的 Google 表格特定问题。
另外,如果有多个键怎么办E2=TEXTJOIN($E$1, TRUE, FILTER(Table2[Key1] & $F$1 & Table2[Key2], Table1[Item]=D2))
?
A | 乙 | C | D | 乙 | F | |
---|---|---|---|---|---|---|
1 | 物品 | 钥匙1 | 按键2 | 物品 | , | - |
2 | 富 | dfgsd | 1ab | 富 | dfgsd - 1ab,6456hfghd - 3dfv | |
3 | 酒吧 | 广东省 | sdfg | 酒吧 | gdfghsh - sdfg,fuibdgdb - h3vf | |
4 | 富 | 6456hfghd | 3dfv | 某物 | dsfkgjlcb - fskib | |
5 | 某物 | dsfkgjlcb | FSKIB | |||
6 | 酒吧 | 数据库数据库 | h3vf |
您可以执行以下操作
BYROW()
,将自定义LAMBDA()
计算应用于 数组中的每一行,x
以检查 中的每个值是否x
等于Table1[Item]
返回一个分隔列表,每行分别输出一个Table1[Key]
。或者,使用
MAP()
这只是一种替代方案,不需要
BYROW()
您想要实现的目标,这里是使用MAP()
函数:对于那些没有 365 的人来说,这是一个 Power Query 替代方案(可以使用这个)?
= Table.Group(#"Previous Step Name", {"Item"}, {{"CombinedKeys", each Text.Combine(List.Distinct(List.Transform(Table.Column(_, "Key"), Text.From)), ","), type text}})
= Table.Group(#"Previous Step Name", {"Item"}, {{"CombinedKeys", each Text.Combine(List.Distinct(List.Transform(Table.ToRecords(_), each Text.From([Key1]) & " - " & Text.From([Key2]))), ","), type text}})
PS 如果您想过滤掉某些键,例如 0 和 -1,请按以下步骤操作: