Hoppa till huvudinnehåll

Hur kan jag koppla upp för att returnera flera värden i en cell i Excel?

Normalt, i Excel, när du använder VLOOKUP-funktionen, om det finns flera värden som matchar kriterierna, kan du bara få den första. Men ibland vill du returnera alla motsvarande värden som uppfyller kriterierna i en cell enligt följande skärmdump, hur kan du lösa det?

Vlookup för att returnera flera värden till en cell med TEXTJOIN-funktionen (Excel 2019 och Office 365)

Vlookup för att returnera flera värden i en cell med användardefinierad funktion

Vlookup för att returnera flera värden till en cell med en användbar funktion


Vlookup för att returnera flera värden till en cell med TEXTJOIN-funktionen (Excel 2019 och Office 365)

Om du har den högre versionen av Excel som Excel 2019 och Office 365 finns det en ny funktion - TEXTGÅ MED, med den här kraftfulla funktionen kan du snabbt söka efter och returnera alla matchande värden i en cell.

Vlookup för att returnera alla matchande värden i en cell

Använd nedanstående formel i en tom cell där du vill placera resultatet och tryck sedan på Ctrl + Skift + Enter tangenter tillsammans för att få det första resultatet och dra sedan fyllningshandtaget ner till cellen du vill använda den här formeln, så får du alla motsvarande värden enligt nedanstående skärmdump:

=TEXTJOIN(",",TRUE,IF($A$2:$A$11=E2,$C$2:$C$11,""))

Notera: I ovanstående formel, A2: A11 är uppslagsintervallet innehåller uppslagsdata, E2 är uppslagsvärdet, C2: C11 är det dataområde som du vill returnera matchande värden från, ","är separator för att separera flera poster.

Vlookup för att returnera alla matchande värden utan dubbletter till en cell

Om du vill returnera alla matchande värden baserat på uppslagsdata utan dubbletter kan formeln nedan hjälpa dig.

Kopiera och klistra in följande formel i en tom cell och tryck sedan på Ctrl + Skift + Enter nycklar tillsammans för att få det första resultatet och kopiera sedan den här formeln för att fylla andra celler, så får du alla motsvarande värden utan dulpikat som visas nedan:

=TEXTJOIN(",", TRUE, IF(IFERROR(MATCH($C$2:$C$11, IF(E2=$A$2:$A$11, $C$2:$C$11, ""), 0),"")=MATCH(ROW($C$2:$C$11), ROW($C$2:$C$11)), $C$2:$C$11, ""))

Notera: I ovanstående formel, A2: A11 är uppslagsintervallet innehåller uppslagsdata, E2 är uppslagsvärdet, C2: C11 är det dataområde som du vill returnera matchande värden från, ","är separator för att separera flera poster.

Vlookup för att returnera flera värden i en cell med användardefinierad funktion

Ovanstående TEXTJOIN-funktion är endast tillgänglig för Excel 2019 och Office 365, om du har andra lägre Excel-versioner, bör du använda några koder för att slutföra den här uppgiften.

Vlookup för att returnera alla matchande värden i en cell

1. Håll ner ALT + F11 knapparna och det öppnar Microsoft Visual Basic för applikationer fönster.

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

VBA-kod: Vlookup för att returnera flera värden i en cell

Function ConcatenateIf(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant
'Updateby Extendoffice
Dim xResult As String
On Error Resume Next
If CriteriaRange.Count <> ConcatenateRange.Count Then
    ConcatenateIf = CVErr(xlErrRef)
    Exit Function
End If
For i = 1 To CriteriaRange.Count
    If CriteriaRange.Cells(i).Value = Condition Then
        xResult = xResult & Separator & ConcatenateRange.Cells(i).Value
    End If
Next i
If xResult <> "" Then
    xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
End If
ConcatenateIf = xResult
Exit Function
End Function

3. Spara och stäng sedan den här koden, gå tillbaka till kalkylbladet och ange den här formeln: =CONCATENATEIF($A$2:$A$11, E2, $C$2:$C$11, ", ") in i en specifik tom cell där du vill placera resultatet, dra sedan ned fyllningshandtaget för att få alla motsvarande värden i en cell som du vill, se skärmdump:

Notera: I ovanstående formel, A2: A11 är uppslagsintervallet innehåller uppslagsdata, E2 är uppslagsvärdet, C2: C11 är det dataområde som du vill returnera matchande värden från, ","är separator för att separera flera poster.

Vlookup för att returnera alla matchande värden utan dubbletter till en cell

För att ignorera dubbletterna i de returnerade matchande värdena gör du med koden nedan.

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 Modulfönster.

VBA-kod: Vlookup och returnera flera unika matchade värden i en cell

Function MultipleLookupNoRept(Lookupvalue As String, LookupRange As Range, ColumnNumber As Integer)
'Updateby Extendoffice
    Dim xDic As New Dictionary
    Dim xRows As Long
    Dim xStr As String
    Dim i As Long
    On Error Resume Next
    xRows = LookupRange.Rows.Count
    For i = 1 To xRows
        If LookupRange.Columns(1).Cells(i).Value = Lookupvalue Then
            xDic.Add LookupRange.Columns(ColumnNumber).Cells(i).Value, ""
        End If
    Next
    xStr = ""
    MultipleLookupNoRept = xStr
    If xDic.Count > 0 Then
        For i = 0 To xDic.Count - 1
            xStr = xStr & xDic.Keys(i) & ","
        Next
        MultipleLookupNoRept = Left(xStr, Len(xStr) - 1)
    End If
End Function

3. När du har infogat koden klickar du sedan på verktyg > Referensprojekt i det öppnade Microsoft Visual Basic för applikationer fönstret och sedan, i poppade ut Referenser - VBAProject dialogruta, kontrollera Microsoft Scripting Runtime alternativet i Tillgängliga referenser listruta, se skärmdumpar:

4. Klicka sedan OK för att stänga dialogrutan, spara och stäng kodfönstret, gå tillbaka till kalkylbladet och skriv in denna formel: =MultipleLookupNoRept(E2,$A$2:$C$11,3) into a blank cell where you want to output the result, and then drag the fill hanlde down to get all matching values, see screenshot:

Notera: I ovanstående formel, A2: C11 är det dataområde du vill använda, E2 är uppslagsvärdet, numret 3 är kolumnnumret som innehåller de returnerade värdena.

Vlookup för att returnera flera värden till en cell med en användbar funktion

 Om du har vår Kutools för Excel, med dess Avancerade kombinera rader kan du snabbt slå samman eller kombinera raderna baserat på samma värde och göra några beräkningar som du behöver.

Notera:Att tillämpa detta Avancerade kombinera raderFör det första bör du ladda ner Kutools för Excel, och använd sedan funktionen snabbt och enkelt.

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

1. Välj det dataområde som du vill kombinera en kolumninformation baserat på en annan kolumn.

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

3. I poppade ut Avancerade kombinera rader dialog ruta:

  • Klicka på nyckelkolonnnamnet som ska kombineras baserat på och klicka sedan på Primärnyckel
  • Klicka sedan på en annan kolumn som du vill kombinera dess data baserat på nyckelkolumnen och klicka Kombinera för att välja en separator för att separera de kombinerade uppgifterna.

4. Klicka sedan på OK -knappen och du får följande resultat:

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


Fler relativa artiklar:

  • VLOOKUP-funktion med några grundläggande och avancerade exempel
  • I Excel är VLOOKUP-funktionen en kraftfull funktion för de flesta Excel-användare, som används för att leta efter ett värde längst till vänster i dataområdet och returnera ett matchande värde i samma rad från en kolumn du angav. Denna handledning talar om hur man använder VLOOKUP-funktionen med några grundläggande och avancerade exempel i Excel.
  • Returnera flera matchande värden baserat på ett eller flera kriterier
  • Normalt är det enkelt för de flesta av oss att leta upp ett visst värde och returnera det matchande objektet med hjälp av VLOOKUP-funktionen. Men har du någonsin försökt att returnera flera matchande värden baserat på ett eller flera kriterier? I den här artikeln kommer jag att presentera några formler för att lösa denna komplexa uppgift i Excel.
  • Vlookup och returnera flera värden vertikalt
  • Normalt kan du använda Vlookup-funktionen för att få det första motsvarande värdet, men ibland vill du returnera alla matchande poster baserat på ett specifikt kriterium. Den här artikeln kommer jag att prata om hur man slår på och returnerar alla matchande värden vertikalt, horisontellt eller i en enda cell.
  • Vlookup och returnera flera värden från rullgardinslistan
  • I Excel, hur kan du söka efter och returnera flera motsvarande värden från en rullgardinslista, vilket innebär att när du väljer ett objekt från rullgardinsmenyn visas alla dess relativa värden på en gång. Den här artikeln presenterar jag lösningen steg för steg.

Bästa kontorsproduktivitetsverktyg

Populära funktioner: Hitta, markera eller identifiera dubbletter   |  Ta bort tomma rader   |  Kombinera kolumner eller celler utan att förlora data   |   Rund utan formel ...
Superuppslag: Flera kriterier VLookup    VLookup med flera värden  |   VSök över flera ark   |   Fuzzy Lookup ....
Avancerad rullgardinslista: Skapa snabbt en rullgardinslista   |  Beroende rullgardinslista   |  Flervals-rullgardinslista ....
Kolumnhanterare: Lägg till ett specifikt antal kolumner  |  Flytta kolumner  |  Växla synlighetsstatus för dolda kolumner  |  Jämför intervall och kolumner ...
Utvalda funktioner: Rutnätsfokus   |  Designvy   |   Stor formelbar    Arbetsbok & Bladhanterare   |  Resursbibliotek (Automatisk text)   |  Datumväljare   |  Kombinera arbetsblad   |  Kryptera/Dekryptera celler    Skicka e-postmeddelanden efter lista   |  Superfilter   |   Specialfilter (filtrera fet/kursiv/genomstruken...) ...
Topp 15 verktygssatser12 text verktyg (lägga till text, Ta bort tecken, ...)   |   50 + Diagram Typer (Gantt Chart, ...)   |   40+ Praktiskt Formler (Beräkna ålder baserat på födelsedag, ...)   |   19 Införande verktyg (Infoga QR-kod, Infoga bild från sökväg, ...)   |   12 Konvertering verktyg (Siffror till ord, Valutaväxling, ...)   |   7 Slå ihop och dela verktyg (Avancerade kombinera rader, Dela celler, ...)   |   ... och mer

Uppgradera dina Excel-färdigheter med Kutools för Excel och upplev effektivitet som aldrig förr. Kutools för Excel erbjuder över 300 avancerade funktioner för att öka produktiviteten och spara tid.  Klicka här för att få den funktion du behöver mest...

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!
Comments (43)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
I have created a problem.
"I" have combined a "Textjoin" end "Vlookup" to return multiple values in to one single cell.
My problem is that the formula have to have an exact value to look for and I want it to lookup an "almost" match or Partial match.

Example: I have made a schedule how we ate going to work and a D1 is working from 07:30-16:00. And to lookup D1 is not the problem, the problem is that my boss sometimes puts other stuff togeather with the D1... Like "D1 +" or "D1 meeting".
Since my formula only lookup "D1" it misses for example the "D1 +".

My formula (that I have gotten from the web) =TEXTJOIN(" och ";SANT;OM($B$3:$B$15=$C$22:$F$22;$A$3:$A$15;""))It´s in swedish so "SANT" is "TRUE" and "OM" is "IF".

How can I make the formula lookup all the cells that have some form of "D1" in it and return all those to the same cell?
No matter if it says "D1 +" or "D1 meeting" or whatever.
The reson I want this, is because the boss always leave "D1" but can add other text behind the "D1"... and just because of that, my boss messes up my formula.
This comment was minimized by the moderator on the site
Hi!
This is a great VBA-Code which could help me a lot.But when I start the Function MultipleLookupNoRept Excel crashs...I´ve got a Dataset with about 6.000 Rows (Excel 2013).... is this too much for the VBA Function?

Thanks!
This comment was minimized by the moderator on the site
Hello Mr.XXL,Sorry to hear that. The row limit for Excel 2013 is 1048576. Therefore, maybe the VBA code is the reason for the crash.
Anyway, I would love to offer you another VBA code for Vlookup To Return All Matching Values Without Duplicates Into One Cell. Please use the VBA code below:
Option Explicit

Function Lookup_concat(Search_string As String, _
Search_in_col As Range, Return_val_col As Range)

Dim i As Long
Dim temp() As Variant
Dim result As String
ReDim temp(0)

For i = 1 To Search_in_col.Count
If Search_in_col.Cells(i, 1) = Search_string Then
temp(UBound(temp)) = Return_val_col.Cells(i, 1).Value
ReDim Preserve temp(UBound(temp) + 1)
End If
Next

If temp(0) <> "" Then
ReDim Preserve temp(UBound(temp) - 1)
Unique temp
For i = LBound(temp) To UBound(temp)
result = result & " " & temp(i)
Next i
Lookup_concat = Trim(result)
Else
Lookup_concat = ""
End If

End Function

Function Unique(tempArray As Variant)

Dim coll As New Collection
Dim Value As Variant

On Error Resume Next
For Each Value In tempArray
If Len(Value) > 0 Then coll.Add Value, CStr(Value)
Next Value
On Error GoTo 0

ReDim tempArray(0)

For Each Value In coll
tempArray(UBound(tempArray)) = Value
ReDim Preserve tempArray(UBound(tempArray) + 1)
Next Value

End Function

After you insert this VBA code in the Module, please type the formula =Lookup_concat(E2,$A$2:$A$14,$C$2:$C$14) into a blank cell where you want to output the result, and then drag the fill hanlde down to get all matching values. Please see the file I uploaded in this comment. Hope it solves your problem. 
Sincerely,Mandy

This comment was minimized by the moderator on the site
Hi, Thanks so much this worked!I used it to pull dates, that populated in the serial number format (<span style="letter-spacing: 0.2px; color: inherit; font-family: inherit; font-style: inherit; font-variant-ligatures: inherit; font-variant-caps: inherit; font-weight: inherit;">Changing the format to short date format using =TEXT(A2,”mm/dd/yy”) OR =DATEVALUE(A2) are not working. Do you have any solutions?</span>
This comment was minimized by the moderator on the site
Thank you for the explanations, however the function 'MultipleLookupNoRept' does not work on my file, could you tell me if an error exists.
This comment was minimized by the moderator on the site
Hi, Hasnae,Please check if you miss the third step -  check Microsoft Scripting Runtime option in the Available References list box.

This comment was minimized by the moderator on the site
Thank you so much for the code. Is there a way I can use the code to look up multiple values from multiple sheets? I tried to combine your function with IFERROR function but it doesn't seem to work.
This comment was minimized by the moderator on the site
Can this be modified to place the sum of those values? Instead of (400 400 400 400 400 400), can it sum them to show (2400)?
This comment was minimized by the moderator on the site
How with HLookUp function?
This comment was minimized by the moderator on the site
thanks for the code. I have modified it to allow you to optionally specify your own separator, Default is " ", if you specify the separator as"#cr" it will insert a CR/LF so the values will be on a separate line in the cell. It only applies the separator if there are multiple values

Function MYVLOOKUP(pValue As String, pWorkRng As Range, pIndex As Long, Optional ByVal pSep As Variant)

' ### Returns multiple values from a table into 1 cell ###

' pValue is the key value to lookup

' WorkRng is the Table you want to look up

' pIndex is the column # for the values to be returned from the pWorkRng

' pSep (optional) is the separator to be used. if omitted then default is a space (it doesn't apply the separator for the 1st entry)

' if the separtor = "#cr" it will separate the values on different line in the cell

Dim rng As Range

Dim sSep As String

Dim xResult As String

Dim Item1 As Boolean

Item1 = True



If IsMissing(pSep) = True Then

sSep = vbCr

Else

If pSep = "#cr" Then

sSep = vbCrLf

Else

sSep = pSep

End If

End If



xResult = ""

For Each rng In pWorkRng

If rng = pValue Then

If Item1 Then

xResult = xResult & rng.Offset(0, pIndex - 1)

Item1 = False

Else

xResult = xResult & sSep & rng.Offset(0, pIndex - 1)

End If

End If

Next

MYVLOOKUP = xResult

End Function
This comment was minimized by the moderator on the site
Thank you for this, the line breaks are what i needed to top this formula off! Question, is there a way to modify the code so that two values are compared? For example, similar to what we see with index and match, can i look for Product and Quantity columns, and based on those parameters it outputs results from the Region Column?
This comment was minimized by the moderator on the site
Thanks a lot for this code, it is very helpful. Does anyone know away to sum the values in the cell to just have at total of them.
Cheers
This comment was minimized by the moderator on the site
Hello, James, to sum values based on the corresponding items, the following article may help you, please chek it:
https://www.extendoffice.com/documents/excel/1268-excel-combine-duplicate-rows-and-sum.html
This comment was minimized by the moderator on the site
I have a server, it has connected with multiple applications. I want to compare compare two column and get the related applications details for that server.

What is the command for that.
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations