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

Hur returnerar jag flera uppslagsvärden i en kommaseparerad cell?

I Excel kan vi använda VLOOKUP-funktionen för att returnera det första matchade värdet från en tabellceller, men ibland måste vi extrahera alla matchande värden och sedan separeras med en specifik avgränsare, som komma, bindestreck, etc ... i en enda cell som följande skärmdump visas. Hur kunde vi få och returnera flera uppslagsvärden i en kommaseparerad cell i Excel?

doc returnerar flera värden kommaseparerade 1

Returnera flera sökvärden i en kommaseparerad cell med användardefinierad funktion

Returnera flera sökvärden i en kommaseparerad cell med Kutools för Excel


Returnera flera sökvärden i en kommaseparerad cell med användardefinierad funktion

Normalt finns det inget direkt sätt för oss att extrahera och returnera flera matchande värden och åtskilda med komma i en cell, här kan du skapa en användardefinierad funktion för att lösa detta jobb, gör så här:

1. Håll ner ALT + F11 nycklar för att öppna Microsoft Visual Basic för applikationer fönster.

2. Klicka Insert > Modulernaoch klistra in följande kod i Modulerna Fönster.

VBA-kod: Returnera flera uppslagsvärden i en kommaseparerad cell

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. Spara sedan den här koden och stäng modulfönstret, gå tillbaka till ditt kalkylblad och skriv in denna formel: = SingleCellExtract (D2, A2: B15,2, ",") i en tom cell som du vill returnera resultatet. Och tryck sedan på ange nyckel för att få resultatet, se skärmdump:

doc returnerar flera värden kommaseparerade 2

Anmärkningar: I ovanstående formel:

D2: anger cellvärdena som du vill slå upp;

A2: B15: är det dataområde som du vill hämta data;

2: siffran 2 är kolumnnumret som matchande värde ska returneras;

,: komma är avgränsaren som du vill separera flera värden.

Du kan ändra dem efter dina behov.


Returnera flera sökvärden i en kommaseparerad cell med Kutools för Excel

Om du har Kutools för Excelkommer den här uppgiften inte längre att vara ett problem. De Avancerade kombinera rader verktyget kan hjälpa dig att kombinera alla relativa värden baserat på en kolumn.

Kutools för Excel : med mer än 300 praktiska Excel-tillägg, gratis att prova utan begränsning på 30 dagar

När du har installerat Kutools för Excel, gör så här:

1. Välj det dataområde som du vill kombinera alla matchande värden baserat på en kolumn.

2. Klicka Kutools > Slå ihop och dela > Avancerade kombinera rader, se skärmdump:

3. I Kombinera rader baserat på kolumn Klicka på kolumnnamnet som du vill kombinera baserat på och klicka sedan på Primärnyckel knapp, se skärmdump:

doc returnerar flera värden kommaseparerade 4

4. Klicka sedan på ett annat kolumnnamn som du vill kombinera deras matchade värden och klicka på Kombinera för att välja en separator för att separera de kombinerade värdena, se skärmdump:

doc returnerar flera värden kommaseparerade 5

5. Klicka sedan OK knappen har alla motsvarande celler med samma värde kombinerats till en cell som är separerade med komma, se skärmdumpar:

doc returnerar flera värden kommaseparerade 6 2 doc returnerar flera värden kommaseparerade 7

Klicka för att få mer information om detta Advanced Combine Rows-verktyg ...

Ladda ner och testa gratis Kutools för Excel nu!


Demo: Returnera flera sökvärden i en kommaseparerad cell med Kutools för Excel

Kutools för Excel: med mer än 300 praktiska Excel-tillägg, gratis att prova utan begränsning på 30 dagar. Ladda ner och testa gratis nu!

De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (17)
Klassad 5 av 5 · 2 betyg
Denna kommentar minimerades av moderatoren på webbplatsen
Medan jag ska klistra in och spara modulen, visas ett popup-meddelande som visar en betydande förlust av funktionalitetskompatibilitetskontrollen
Denna kommentar minimerades av moderatoren på webbplatsen
Tack för detta inlägg. Vet du hur jag skulle gå tillväga för att manipulera de två separata heltal som detta skapar. Låt oss till exempel säga att funktionen '=SingleCellExtract' nu producerar (1 , 2). Finns det något sätt att ha en cell bredvid som gör det (1+.5 , 2+.5)?
Denna kommentar minimerades av moderatoren på webbplatsen
Detta fungerar men saktar ner min excel avsevärt! Har du några tips för att öka hastigheten?
Denna kommentar minimerades av moderatoren på webbplatsen
Detta fungerar helt enkelt inte. Jag kunde inte få det att fungera i min egen applikation, så jag kopierade/klistrade in vba och formeln och det returnerade ett fel varje gång
Denna kommentar minimerades av moderatoren på webbplatsen
tack, för det första lyckades jag få det här att fungera utan att det blev långsammare i prestanda. Jag använder värden snarare än texten så min fråga är att jag vill ta tillbaka alla de med mindre än säg 19 poäng i en lista. Kan encellsextraktet fungera för det eller måste det vara ett specifikt värde?
Denna kommentar minimerades av moderatoren på webbplatsen
VB-kommandot avbryts när intervallet är längre än 154 rader (dvs :B154)....
Denna kommentar minimerades av moderatoren på webbplatsen
Fel dyker upp om du ökar arraystorleken
Denna kommentar minimerades av moderatoren på webbplatsen
När 2 kriterier matchar returnerar du flera uppslagsvärden i en kommaseparerad cell
A2=B2 Resultat från intervall med "SingleCellExtract" - snälla.......
Denna kommentar minimerades av moderatoren på webbplatsen
God morgon,

VBA-koden fungerade perfekt med mitt kalkylblad, ganska tydligt och enkelt, men jag försökte hitta ett sätt att säga till excel att bara returnera de unika värdena. Skulle det vara möjligt med samma kod?
Klassad 5 av 5
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

Jag vill ha exakt valideringskod för flera värden separerade med kommatecken och mellanslag för varje värde.

Exempelvis:
Lucy, Tom, Nicol, Akash, Apple

Vänligen spela om du har några förslag.
Klassad 4.5 av 5
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, Manikanta
För att separera de flera värdena med kommatecken och mellanslag behöver du bara lägga till ett mellanslag bakom kommatecken, ändra formeln så här: =SingleCellExtract(D2,A2:B15,2,", ").
Försök gärna, hoppas det kan hjälpa dig!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Skyyang,

Tack för din repris!

Jag försökte redan på samma sätt men i cellvärdet sista ett extra kommatecken (,) nedan är exemplet.

Lucy, Tom, Nicol, Akash, Apple,

Detta kommer inte att fungera för Json-fil, så jag vill ha värden separerade med kommatecken och mellanslag som nedan.

Lucy, Tom, Nicol, Akash, Apple

Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, Manikanta
I det här fallet kan du använda följande användardefinierade funktion:

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


När du har klistrat in koden, använd denna formel: =MultipleValues($A$2:$A$15,D2,$B$2:$B$15,", ")

Försök gärna, hoppas detta kan hjälpa dig!
Om du fortfarande har något annat problem, vänligen kommentera här.
https://www.extendoffice.com/images/stories/comments/comment-skyyang/doc-return-multiple-matching-1.png
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Skyyang,

Det här fungerar nu, tack för ditt snabba svar.

Det är mycket användbart för mig än en gång. Tack för din hjälp.

Hälsningar,
Manikanta.
Klassad 5 av 5
Denna kommentar minimerades av moderatoren på webbplatsen
Ingen soja programador pero necesito ayuda para que la función de abajo en lugar de devolverme esto

S-01-08-0017->Microstolpe 1R, svart, rostfritt stål -ände,->4;S-01-08-0057->Microstolpe 2R, svart, rostfritt stål -ände,->2

mig devuelva los valores en líneas diferentes.
S-01-08-0017->Micro Stolpe 1R, Svart, Rostfritt Stål -End,->4
S-01-08-0057->Micro Stolpe 2R, Svart, Rostfritt Stål -End,->2

Funktionen är:
Funktion SingleCellExtract(LookupValue As String, LookupRange As Range, ColumnNumber Som Heltal, Char Som String)
'Uppdatering av Extendoffice
Dim I As Long
Dim xRet As String
För I = 1 Till LookupRange.Columns(1).Cells.Count
If LookupRange.Cells(I, 1) = LookupValue Then
Om xRet = "" Då
xRet = LookupRange.Cells(I, ColumnNumber) & Char
annars
xRet = xRet & "" & LookupRange.Cells(I, ColumnNumber) & Char
End If
End If
Nästa
SingleCellExtract = Left(xRet, Len(xRet) - 1)
Änden Funktion
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Yery,
Menade du att dela upp en cell i flera rader baserat på semikolontecknet?
Om så är fallet kan följande VBA-kod hjälpa dig:
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

Gör ett försök, hoppas det kan hjälpa dig!
Denna kommentar minimerades av moderatoren på webbplatsen
Var/hur ändrar jag VBA-koden för att producera "text" om en matchning inte hittas -- med ovanstående kod, om ett värde inte hittas, "#VALUE!" visas i cellen. Det här är inte det bästa utseendet för arbetsboken. Tack.
Det finns inga kommentarer här ännu
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL