Per quanto ne so non ci sono funzionalità integrate che possono analizzare e riepilogare i tag separati da virgola in Excel. Ovviamente puoi creare la tua soluzione con le funzioni del foglio di lavoro e un po 'di VBA. Ecco una rapida soluzione per farlo.
Passaggio 1 : premere Alt+ F11per aprire il riquadro dell'editor VBA in Excel. Inserisci un nuovo modulo e incolla questo codice per una funzione personalizzata.
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
Questa funzione ti consentirà di creare elenchi separati da virgole per riepilogare i dati dei tag che hai.
Passaggio 2 : in un foglio di lavoro, immettere in una cella (H2 nell'esempio seguente) il tag che si desidera cercare. Nella cella a destra, inserisci la seguente formula premendo Ctrl+ Shift+ Enter.
=IFERROR(CCARRAY(IF(NOT(ISERROR(FIND(H2,$B$2:$B$6))),$A$2:$A$6),", "),"No matches found.")
Premendo Ctrl+ Shift+ Enter, si immette la formula come formula di matrice. Apparirà circondato dalla {...}
barra della formula. Si noti che nella formula $B$2:$B$6
è l'intervallo che contiene tutti i tag per gli elementi elencati in $A$2:$A$6
.
MODIFICA:
Se non ti dispiace che le tue corrispondenze vengano elencate in una colonna anziché in un elenco in una cella, puoi restituire le corrispondenze per i tag utilizzando solo le funzioni del foglio di lavoro.
Dove i titoli sono in Column A
, i tag sono in Column B
, e il tag che si sta cercando è in H2
, è possibile utilizzare la seguente formula di matrice in I2
e riempire giù, per quanto è necessario:
=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)),"")
La formula funziona innanzitutto formando una matrice di numeri in base al fatto che i tag in ciascuna riga contengano il termine di ricerca. Se viene trovata una corrispondenza, il numero di riga viene memorizzato nella matrice. Se non viene trovato, 2000000 viene archiviato nell'array. Successivamente, la SMALL(<array>,ROW()-1)
parte della formula restituisce il ROW()-1
valore più piccolo dall'array. Successivamente, questo valore viene passato come argomento dell'indice alla INDEX()
funzione, dove viene restituito il valore di quell'indice nella matrice di titoli. Se un numero maggiore del numero di righe nella matrice del titolo viene passato INDEX()
come argomento, viene restituito un errore. Poiché 2000000 viene passato come argomento quando non viene trovata alcuna corrispondenza, viene restituito un errore. La IFERROR()
funzione quindi ritorna ""
in questo caso.
È importante capire come ROW()
viene utilizzato in questa formula. Se si desidera visualizzare l'elenco dei risultati che iniziano in una riga diversa, sarà necessario regolare il secondo argomento della SMALL()
funzione in modo che restituisca il primo valore più piccolo dall'array. Ad esempio, se il tuo elenco di risultati inizia nella riga 1 anziché nella riga 2, utilizzerai SMALL(...,ROW())
invece di SMALL(...,ROW()-1)
.
Inoltre, se l'elenco di titoli e tag non inizia nella riga 1, sarà necessario modificare anche la formula. Il secondo argomento della IF()
funzione deve essere modificato in modo che una corrispondenza nella prima riga dei dati restituisca 1. Ad esempio, se l'elenco di titoli inizia nella riga 2 anziché nella riga 1, è necessario includere la formula IF(...,ROW($A$2:$A$7)-1,...)
anziché IF(...,ROW($A$1:$A$6),...)
.