Ecco l'approccio VBA. Supponendo Excel 2007 o successivo; i primi passaggi differiranno se si utilizza una versione pre-Ribbon di Excel.
Abilita la scheda Sviluppatore
Fai clic su "Visual Basic" nella scheda Sviluppatore sulla barra multifunzione
Fai clic con il tasto destro del mouse su "VBAProject (qualunque sia il tuo foglio è denominato.xls *)" e fai Inserisci -> Modulo nel menu contestuale
Incolla questo codice
Option Explicit
Function allquixotic(param As Variant, search As Range, values As Range, Optional absolute As Boolean = False) As String
Dim sep As String, retval As String
Dim i As Integer, rownum As Integer
Dim look As Range, j As Range
sep = ", "
retval = ""
For i = 1 To search.Rows.Count
Set look = search.Cells(i, 1)
If absolute Then
rownum = look.Row
Else
rownum = i
End If
If look.Value = param Then
If absolute Then
Set j = values.Worksheet.Cells(rownum, values.Column)
Else
Set j = values.Cells(i, 1)
End If
retval = IIf(retval = "", retval & j.Value, retval & sep & j.Value)
End If
Next
allquixotic = retval
End Function
Usa la funzione del foglio di lavoro (sentiti libero di rinominarla) usando una formula simile
=allquixotic(A1,$A$1:$A$15,$B$1:$B$15,true)
Utilizzare la maniglia di riempimento per inserire la formula in tutte le celle
I parametri sono i seguenti:
=allquixotic(look_cell, key_range, value_range, absolute)
look_cell
: Il primo parametro dovrebbe essere una singola cella o un valore letterale . L'input valido include cose come 3
, $6.25
, "Hello"
, ecc Questo è il valore che si sta cercando di trovare in key_range
.
key_range
: Questo dovrebbe essere un intervallo di celle (più di una cella); se absolute
è vero, otterrai risultati molto strani a meno che questo non sia un intervallo contiguo (tutti i valori sono in righe sequenziali).
value_range
: Questo dovrebbe essere un intervallo di celle (più di una cella); se absolute
è vero, otterrai risultati molto strani a meno che questo non sia un intervallo contiguo (tutti i valori sono in righe sequenziali).
absolute
: Se vero, utilizzeremo il numero di riga assoluto (relativo al numero di righe nell'intero foglio di calcolo) di ciascuna riga "trovata" in key_range
per determinare da quale riga estrarre un valore value_range
. Se falso, useremo i numeri relativi; ad esempio, se troviamo una corrispondenza nella terza riga di key_range
, estrarremo il valore dalla terza riga di value_range
. Il valore consigliato è FALSE oppure è possibile ometterlo per impostazione predefinita.
Nota : questa funzione non supporta il caso in cui la chiave e gli intervalli di valori sono in colonne , ma dovrebbe essere abbastanza facile adattarlo a quello.
Inoltre, se si specificano più colonne in key_range o value_range, verrà utilizzata solo la colonna più a sinistra.