Note: The other languages of the website are Google-translated. Back to English

Come restituire più valori di ricerca in una cella separata da virgole?

In Excel, possiamo applicare la funzione CERCA.VERT per restituire il primo valore corrispondente dalle celle di una tabella, ma, a volte, dobbiamo estrarre tutti i valori corrispondenti e quindi separati da un delimitatore specifico, come virgola, trattino, ecc ... in un unico cella come mostrato nella seguente schermata. Come possiamo ottenere e restituire più valori di ricerca in una cella separata da virgole in Excel?

doc restituisce più valori separati da virgola 1

Restituisce più valori di ricerca in una cella separata da virgole con Funzione definita dall'utente

Restituisce più valori di ricerca in una cella separata da virgole con Kutools per Excel


Restituisce più valori di ricerca in una cella separata da virgole con Funzione definita dall'utente

Normalmente, non esiste un modo diretto per estrarre e restituire più valori corrispondenti e separati da virgola in una cella, qui puoi creare una funzione definita dall'utente per risolvere questo lavoro, per favore fai come segue:

1. Tieni premuto il ALT + F11 chiavi per aprire il Microsoft Visual Basic, Applications Edition finestra.

2. Clic inserire > Moduloe incolla il codice seguente nel file Modulo Finestra.

Codice VBA: restituisce più valori di ricerca in una cella separata da virgole

Function SingleCellExtract(LookupValue As String, LookupRange As Range, ColumnNumber As Integer, Char As String)
'Updateby Extendoffice
    Dim I As Long
    Dim xRet As String
    For I = 1 To LookupRange.Columns(1).Cells.Count
        If LookupRange.Cells(I, 1) = LookupValue Then
            If xRet = "" Then
                xRet = LookupRange.Cells(I, ColumnNumber) & Char
            Else
                xRet = xRet & "" & LookupRange.Cells(I, ColumnNumber) & Char
            End If
        End If
    Next
    SingleCellExtract = Left(xRet, Len(xRet) - 1)
End Function

3. Quindi salva questo codice e chiudi la finestra del modulo, torna al foglio di lavoro e inserisci questa formula: = SingleCellExtract (D2, A2: B15,2, ",") in una cella vuota in cui si desidera restituire il risultato. E poi premere Entra tasto per ottenere il risultato, vedi screenshot:

doc restituisce più valori separati da virgola 2

Note:: Nella formula sopra:

D2: indica i valori delle celle che si desidera cercare;

LA2: SI15: è l'intervallo di dati da cui vuoi recuperare i dati;

2: il numero 2 è il numero di colonna a cui deve essere restituito il valore corrispondente;

,: la virgola è il separatore da cui vuoi separare i valori multipli.

Puoi cambiarli secondo le tue necessità.


Restituisce più valori di ricerca in una cella separata da virgole con Kutools per Excel

Se si dispone di Kutools for Excel, questa attività non sarà più un problema. Il Combina righe avanzate L'utilità può aiutarti a combinare tutti i valori relativi in ​​base a una colonna.

Kutools for Excel : con oltre 300 utili componenti aggiuntivi di Excel, da provare gratuitamente senza limitazioni in 30 giorni

Dopo l'installazione Kutools for Excel, si prega di fare come segue:

1. Seleziona l'intervallo di dati in cui desideri combinare tutti i valori corrispondenti in base a una colonna.

2. Clic Kutools > Unisci e dividi > Combina righe avanzate, vedi screenshot:

3. Nel Combina righe in base alla colonna finestra di dialogo, fare clic sul nome della colonna che si desidera combinare in base a, quindi fare clic su Chiave primaria pulsante, vedi screenshot:

doc restituisce più valori separati da virgola 4

4. Quindi fare clic su un altro nome di colonna in cui si desidera combinare i valori corrispondenti e fare clic Combinare per scegliere un separatore per separare i valori combinati, vedi screenshot:

doc restituisce più valori separati da virgola 5

5. Quindi fare clic OK pulsante, tutte le celle corrispondenti con lo stesso valore sono state combinate in una cella separata dalla virgola, vedi screenshot:

doc restituisce più valori separati da virgola 6 2 doc restituisce più valori separati da virgola 7

Fare clic per conoscere ulteriori dettagli su questa utilità Combina righe avanzate ...

Scarica e prova gratuitamente Kutools per Excel ora!


Demo: restituisci più valori di ricerca in una cella separata da virgole con Kutools per Excel

Kutools for Excel: con più di 300 utili componenti aggiuntivi di Excel, liberi di provare senza limitazioni in 30 giorni. Scarica e prova gratuita ora!

I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office/Excel 2007-2021 e 365. Supporta tutte le lingue. Facile implementazione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!
fondo officetab
Commenti (17)
Rinomato 5 su 5 · Valutazioni 2
Questo commento è stato fatto dal moderatore sul sito
Mentre sto per incollare e salvare il modulo, viene visualizzato un messaggio pop-up che indica una significativa perdita di funzionalità di verifica della compatibilità
Questo commento è stato fatto dal moderatore sul sito
Grazie per questo post. Sai come farei per manipolare i due interi separati che questo sta creando. Ad esempio, diciamo che la funzione '=SingleCellExtract' ora produce (1 , 2). C'è un modo per avere una cella accanto che fa (1+.5 , 2+.5)?
Questo commento è stato fatto dal moderatore sul sito
Funziona ma rallenta notevolmente il mio excel! Qualche consiglio per accelerare?
Questo commento è stato fatto dal moderatore sul sito
Questo semplicemente non funziona. Non sono riuscito a farlo funzionare nella mia applicazione, quindi ho copiato/incollato vba e la formula e ogni volta ha restituito un errore
Questo commento è stato fatto dal moderatore sul sito
grazie, in primo luogo sono riuscito a farlo funzionare senza il rallentamento delle prestazioni. Sto usando i valori piuttosto che il testo, quindi la mia domanda è che voglio riportare tutti quelli con meno di 19 punti in un elenco. L'estrazione a cella singola può funzionare per questo o deve essere un valore specifico?
Questo commento è stato fatto dal moderatore sul sito
Il comando VB si interrompe quando l'intervallo è più lungo di 154 righe (ad esempio: B154)....
Questo commento è stato fatto dal moderatore sul sito
Viene visualizzato un errore se si aumenta la dimensione dell'array
Questo commento è stato fatto dal moderatore sul sito
Quando 2 criteri corrispondono, restituisce più valori di ricerca in una cella separata da virgole
A2=B2 Quindi Risultato dall'intervallo di "SingleCellExtract" - Per favore.......
Questo commento è stato fatto dal moderatore sul sito
Buongiorno,

il codice VBA ha funzionato perfettamente con il mio foglio di lavoro, abbastanza chiaro e semplice, tuttavia, stavo cercando di trovare un modo per dire a Excel di restituire solo i valori univoci. Sarebbe possibile utilizzare lo stesso codice?
Rinomato 5 su 5
Questo commento è stato fatto dal moderatore sul sito
Ciao,

Voglio un codice di convalida esatto per più valori separati da virgola e spazio per ogni valore.

Esempio:
Lucy, Tom, Nicol, Akash, Apple

Si prega di ripetere se avete suggerimenti.
Rinomato 4.5 su 5
Questo commento è stato fatto dal moderatore sul sito
Ciao, Manikanta
Per separare i valori multipli con una virgola e uno spazio, devi solo aggiungere uno spazio dietro la virgola, cambia la formula in questo modo: =Estratto a cella singola(D2,A2:B15,2,", ").
Per favore, prova, spero che possa aiutarti!
Questo commento è stato fatto dal moderatore sul sito
Ciao Skyyang,

Grazie per la tua replica!

Ho già provato allo stesso modo, ma nel valore della cella l'ultima virgola in più (,) che segue è l'esempio.

Lucy, Tom, Nicol, Akash, Apple,

Questo non funzionerà per il file Json, quindi voglio valori separati da virgola e spazio come di seguito.

Lucy, Tom, Nicol, Akash, Apple

.
Questo commento è stato fatto dal moderatore sul sito
Ciao, Manicanta
In questo caso, è possibile applicare la funzione definita dall'utente di seguito:

Function MultipleValues(work_range As Range, criteria As Variant, merge_range As Range, Optional Separator As String = ",") As Variant
Dim outcome As String
On Error Resume Next
If work_range.Count <> merge_range.Count Then
MultipleValues = CVErr(xlErrRef)
Exit Function
End If
For i = 1 To work_range.Count
If work_range.Cells(i).Value = criteria Then
outcome = outcome & Separator & merge_range.Cells(i).Value
End If
Next i
If outcome <> "" Then
outcome = VBA.Mid(outcome, VBA.Len(Separator) + 1)
End If
MultipleValues = outcome
Exit Function
End Function


Dopo aver incollato il codice, utilizzare questa formula: =MultipleValues($A$2:$A$15,D2,$B$2:$B$15,", ")

Per favore, prova, spero che questo possa aiutarti!
Se hai ancora altri problemi, commenta qui.
https://www.extendoffice.com/images/stories/comments/comment-skyyang/doc-return-multiple-matching-1.png
Questo commento è stato fatto dal moderatore sul sito
Ciao Skyyang,

Ora sta funzionando, grazie per la tua rapida risposta.

È molto utile per me ancora una volta Grazie per il tuo aiuto.

Saluti,
Manicanta.
Rinomato 5 su 5
Questo commento è stato fatto dal moderatore sul sito
Non soy programador ma necesito ayuda para que la función de abajo en lugar de devolverme esto

S-01-08-0017->Micro Post 1R, Nero, Acciaio Inox -End,->4;S-01-08-0057->Micro Post 2R, Nero, Acciaio Inox -End,->2

me devuelva los valores en lineas diferentes.
S-01-08-0017->Micro Post 1R, Nero, Acciaio Inox -End,->4
S-01-08-0057->Micro Post 2R, Nero, Acciaio Inox -End,->2

La funzione è:
Funzione SingleCellExtract(LookupValue As String, LookupRange As Range, ColumnNumber As Integer, Char As String)
'Aggiorna entro Extendoffice
Dim I quanto a lungo
Dim xRet As String
For I = 1 To LookupRange.Columns(1).Cells.Count
Se LookupRange.Cells(I, 1) = LookupValue Then
Se xRet = "" Allora
xRet = LookupRange.Cells(I, ColumnNumber) & Char
Altro
xRet = xRet & "" & LookupRange.Cells(I, ColumnNumber) & Char
End If
End If
Successiva
SingleCellExtract = Left(xRet, Len(xRet) - 1)
End Function
Questo commento è stato fatto dal moderatore sul sito
Ciao Yery,
Intendevi dividere una cella in più righe in base al carattere punto e virgola?
In tal caso, il seguente codice VBA può aiutarti:
Sub SplitAll()
    Dim xRg As Range
    Dim xRg1 As Range
    Dim xCell As Range
    Dim I As Long
    Dim xAddress As String
    Dim xUpdate As Boolean
    Dim xRet As Variant
    On Error Resume Next
    xAddress = Application.ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select a range", "Kutools for Excel", xAddress, , , , , 8)
    Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
    If xRg Is Nothing Then Exit Sub
        If xRg.Columns.Count > 1 Then
            MsgBox "You can't select multiple columns", , "Kutools for Excel"
            Exit Sub
            End If
            Set xRg1 = Application.InputBox("Split to (single cell):", "Kutools for Excel", , , , , , 8)
            Set xRg1 = xRg1.Range("A1")
            If xRg1 Is Nothing Then Exit Sub
                xUpdate = Application.ScreenUpdating
                Application.ScreenUpdating = False
                For Each xCell In xRg
                    xRet = Split(xCell.Value, ";")
                    xRg1.Worksheet.Range(xRg1.Offset(I, 0), xRg1.Offset(I + UBound(xRet, 1), 0)) = Application.WorksheetFunction.Transpose(xRet)
                    I = I + UBound(xRet, 1) + 1
                Next
                Application.ScreenUpdating = xUpdate
            End Sub

Per favore, prova, spero che possa aiutarti!
Questo commento è stato fatto dal moderatore sul sito
Dove / come posso modificare il codice VBA per produrre "testo" se non viene trovata una corrispondenza - con il codice sopra, se non viene trovato un valore, "#VALUE!" viene visualizzato nella cella. Questo non è l'aspetto migliore per la cartella di lavoro. Grazie.
Non ci sono ancora commenti pubblicati qui
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite

Seguici

Copyright © 2009 - www.extendoffice.com. | Tutti i diritti riservati. Offerto da ExtendOffice, | Mappa del sito
Microsoft e il logo Office sono marchi o marchi registrati di Microsoft Corporation negli Stati Uniti e / o in altri paesi.
Protetto da Sectigo SSL