Até onde eu sei, não há recursos integrados que possam analisar e resumir tags separadas por vírgulas no Excel. Você pode, claro, criar sua própria solução com funções de planilha e um pouco de VBA. Aqui está uma solução rápida para fazer isso.
Passo 1 : Pressione Alt + F11 para abrir o painel do editor do VBA no Excel. Insira um novo módulo e cole este código para uma função personalizada.
Public Function CCARRAY(rr As Variant, sep As String)
'rr is the range or array of values you want to concatenate. sep is the delimiter.
Dim rra() As Variant
Dim out As String
Dim i As Integer
On Error GoTo EH
rra = rr
out = ""
i = 1
Do While i <= UBound(rra, 1)
If rra(i, 1) <> False Then
out = out & rra(i, 1) & sep
End If
i = i + 1
Loop
out = Left(out, Len(out) - Len(sep))
CCARRAY = out
Exit Function
EH:
rra = rr.Value
Resume Next
End Function
Esta função permite criar listas separadas por vírgula para resumir os dados da tag que você possui.
Etapa 2 : em uma planilha, insira em uma célula (H2 no exemplo abaixo) a tag que você deseja pesquisar. Na célula à direita, insira a seguinte fórmula pressionando Ctrl + Deslocar + Enter .
=IFERROR(CCARRAY(IF(NOT(ISERROR(FIND(H2,$B$2:$B$6))),$A$2:$A$6),", "),"No matches found.")
Pressionando Ctrl + Deslocamento + Enter , você está inserindo a fórmula como uma fórmula de matriz. Ele aparecerá rodeado por {...}
na barra de fórmulas. Observe que na fórmula $B$2:$B$6
é o intervalo que contém todas as tags dos itens listados em $A$2:$A$6
.
EDITAR:
Sevocênãoseimportarquesuascorrespondênciassejamlistadasemumacolunaemvezdeemumalistaemumacélula,poderáretornarcorrespondênciasparatagsusandoapenasfunçõesdeplanilha.
OndeseustítulosestãoemColumnA
,astagsestãoemColumnB
eatagquevocêestáprocurandoestáemH2
,vocêpodeusaraseguintematrizdefórmulaemI2
epreenchaoquevocêprecisar:
=IFERROR(INDEX($A$1:$A$6,SMALL(IF(NOT(ISERROR(FIND($H$2,$B$1:$B$6))),ROW($B$1:$B$6),2000000),ROW()-1)),"")
Afórmulafuncionaprimeiroformandoumamatrizdenúmeroscombaseemseastagsemcadalinhacontêmotermodepesquisa.Seumacorrespondênciaforencontrada,onúmerodalinhaseráarmazenadonamatriz.Senãoforencontrado,2000000éarmazenadonamatriz.Emseguida,aparteSMALL(<array>,ROW()-1)
dafórmularetornaomenorvalorROW()-1
thdamatriz.Emseguida,essevalorépassadocomoumargumentodeíndiceparaafunçãoINDEX()
,emqueovalornesseíndicenamatrizdetítuloséretornado.SeumnúmeromaiorqueonúmerodelinhasnamatrizdetítulosforpassadoparaINDEX()
comoumargumento,umerroseráretornado.Como2000000épassadocomoargumentoquandonenhumacorrespondênciaéencontrada,umerroéretornado.AfunçãoIFERROR()
retornaentão""
neste caso.
É importante entender como o ROW()
está sendo usado nesta fórmula. Se você deseja exibir sua lista de resultados iniciando em uma linha diferente, será necessário ajustar o segundo argumento da função SMALL()
para que ele retorne o primeiro menor valor da matriz. Por exemplo, se sua lista de resultados começar na Linha 1 em vez da Linha 2, você usaria SMALL(...,ROW())
em vez de SMALL(...,ROW()-1)
.
Além disso, se sua lista de títulos e tags não for iniciada na Linha 1, você precisará ajustar a fórmula também. O segundo argumento da função IF()
deve ser ajustado para que uma correspondência na primeira linha de seus dados retorne 1. Por exemplo, se sua lista de títulos começar na Linha 2 em vez da Linha 1, você precisará da fórmula para incluir IF(...,ROW($A$2:$A$7)-1,...)
em vez de IF(...,ROW($A$1:$A$6),...)
.