Eu tenho uma tabela da qual extraio uma lista de valores exclusivos, depois quero extrair todas as suas chaves e mesclá-las usando textjoin. Mas a função Filter faz com que os critérios sejam comparados com um único valor, enquanto eu quero que os critérios procurem uma linha inteira.
Em circunstâncias normais, eu ficaria com um único valor e deixaria arrastar a cidade com uma tabela, mas neste caso a fonte é uma função Única, portanto não pode ser uma tabela.
Agora é:
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))
Mas os dados são dinâmicos, então não posso continuar fazendo D5, D6, etc. e também não quero apenas arrastar para baixo as células não utilizadas porque isso torna o arquivo mais lento.
Então, o que estou procurando é algo como E2 =TEXTJOIN($E$1, TRUE, FILTER(Table1[Key],Table1[Item]= D:D )) mais apenas para células D não vazias, então o resultado será sem precisar colocar fórmulas em E3, E4, etc.:
A | B | C | D | E | |
---|---|---|---|---|---|
1 | Item | Chave | Item | , | |
2 | foo | dfgsd | foo | dfgsd,6456hfghd | |
3 | bar | gdfghsh | bar | gdfghsh,fuibdgdb | |
4 | foo | 6456hfghd | algo | dsfkgjlcb | |
5 | algo | dsfkgjlcb | |||
6 | bar | fuibdgdb |
É possível? Consulte uma pergunta semelhante específica do Planilhas Google .
Além disso, e se houver várias chaves, ou seja E2=TEXTJOIN($E$1, TRUE, FILTER(Table2[Key1] & $F$1 & Table2[Key2], Table1[Item]=D2))
?
A | B | C | D | E | F | |
---|---|---|---|---|---|---|
1 | Item | Chave1 | Chave2 | Item | , | - |
2 | foo | dfgsd | 1ab | foo | dfgsd - 1ab,6456hfghd - 3dfv | |
3 | bar | gdfghsh | sdfg | bar | gdfghsh - sdfg,fuibdgdb - h3vf | |
4 | foo | 6456hfghd | 3dfv | algo | dsfkgjlcb-fskib | |
5 | algo | dsfkgjlcb | fskib | |||
6 | bar | fuibdgdb | h3vf |
Aqui está o que você pode fazer usando
BYROW()
o qual aplica cálculos personalizadosLAMBDA()
a cada linha na matriz dex
para verificar se cada valorx
é igual aTable1[Item]
retornar uma lista delimitada, uma saída por linha com o respectivoTable1[Key]
.Ou, usando
MAP()
Esta é apenas uma alternativa, não necessária como
BYROW()
deveria, o que você está tentando alcançar, aqui está usandoMAP()
a função:Aqui está uma alternativa do Power Query para quem não tem 365 (que pode usar isso )?
= 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 Se você quiser filtrar certas chaves, como 0 e -1, veja como: