Tanto quanto sei, não há recursos internos que possam analisar e resumir tags separadas por vírgula no Excel. Obviamente, você pode 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.
Etapa 1 : pressione Alt+ F11para abrir o painel do editor VBA no Excel. Insira um novo módulo e cole neste 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 permitirá que você crie 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, digite a seguinte fórmula pressionando Ctrl+ Shift+ Enter.
=IFERROR(CCARRAY(IF(NOT(ISERROR(FIND(H2,$B$2:$B$6))),$A$2:$A$6),", "),"No matches found.")
Pressionando Ctrl+ Shift+ Enter, você está inserindo a fórmula como uma fórmula de matriz. Aparecerá cercado {...}
na barra de fórmulas. Note-se que na fórmula $B$2:$B$6
é o intervalo que contém todas as marcas para os itens listados no $A$2:$A$6
.
EDIT:
Se você não se importa que suas correspondências sejam listadas em uma coluna, e não em uma lista em uma célula, você pode retornar correspondências para tags usando apenas as funções da planilha.
Onde seus títulos estão em Column A
, as tags estão em Column B
, ea marca que você está procurando está em H2
, você pode usar a seguinte fórmula de matriz em I2
e preencher para baixo tanto quanto você precisa:
=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)),"")
A fórmula funciona formando primeiro uma matriz de números com base em se as tags em cada linha contêm o termo de pesquisa. Se uma correspondência for encontrada, o número da linha é armazenado na matriz. Se não for encontrado, 2000000 é armazenado na matriz. A seguir, a SMALL(<array>,ROW()-1)
parte da fórmula retorna o ROW()-1
menor valor da matriz. Em seguida, esse valor é passado como um argumento de índice para a INDEX()
função, onde o valor nesse índice na matriz de títulos é retornado. Se um número maior que o número de linhas na matriz de títulos for passado INDEX()
como argumento, um erro será retornado. Como 2000000 é passado como argumento quando nenhuma correspondência é encontrada, um erro é retornado. A IFERROR()
função então retorna ""
neste caso.
É importante entender como 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 SMALL()
função para que ela retorne o primeiro menor valor da matriz. Por exemplo, se sua lista de resultados começa na Linha 1 em vez da Linha 2, você usaria em SMALL(...,ROW())
vez de SMALL(...,ROW()-1)
.
Além disso, se sua lista de títulos e tags não começar na Linha 1, você precisará ajustar a fórmula também. O segundo argumento da IF()
função deve ser ajustado para que uma correspondência na primeira linha dos 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 em IF(...,ROW($A$2:$A$7)-1,...)
vez de IF(...,ROW($A$1:$A$6),...)
.