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

Hur kopplar man upp och sammanfogar flera motsvarande värden i Excel?

Som vi alla visste, LETARAD funktion i Excel kan hjälpa oss att leta upp ett värde och returnera motsvarande data i en annan kolumn, men i allmänhet kan det bara få det första relativa värdet om det finns flera matchande data. I den här artikeln kommer jag att prata om hur man kan koppla upp och sammanfoga flera motsvarande värden i endast en cell eller en vertikal lista.

Vlookup och returnera flera matchande värden vertikalt med formeln

Vlookup och sammanfoga flera matchande värden i en cell med användardefinierad funktion

Vlookup och sammanfoga flera matchande värden i en cell med Kutools för Excel


Om jag antar att jag har följande dataområde, för att få alla motsvarande värden baserat på ett visst värde vertikalt som följande skärmdump visas, kan du använda en matrisformel.

doc vlookup sammanfoga 1

1. Ange denna formel: =IF(COUNTIF($A$1:$A$16,$D$2)>=ROWS($1:1),INDEX($B$1:$B$16,SMALL(IF($A$1:$A$16=$D$2,ROW($1:$16)),ROW(1:1))),"") till en tom cell där du vill placera resultatet, till exempel E2, och tryck sedan på Ctrl + Skift + Enter nycklar tillsammans för att få den relativa värdebasen på ett specifikt kriterium, se skärmdump:

doc vlookup sammanfoga 2

Anmärkningar: I ovanstående formel:

A1: A16 är kolumnområdet som innehåller det specifika värde du vill leta efter;

D2 indikerar det specifika värde du vill ta upp;

B1: B16 är det kolumnområde som du vill returnera motsvarande data från;

$ 1: $ 16 anger radereferensen inom intervallet.

2. Välj sedan cell E2 och dra påfyllningshanteringen ner till cellerna tills du får tomma celler och alla matchande värden listas i kolumnen som följande skärmdump visas:

doc vlookup sammanfoga 3


I stället för att få de relativa värdena vertikalt vill du ibland matcha värdena i en cell och sammanfoga dem med en specifik separator. I det här fallet kan följande användardefinierade funktion göra dig en tjänst.

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: Vlookup och sammanfoga flera matchande värden i en cell

Function CusVlookup(lookupval, lookuprange As Range, indexcol As Long)
'updateby Extendoffice
Dim x As Range
Dim result As String
result = ""
For Each x In lookuprange
    If x = lookupval Then
        result = result & " " & x.Offset(0, indexcol - 1)
    End If
Next x
CusVlookup = result
End Function

3. Spara och stäng sedan den här koden, gå tillbaka till kalkylbladet och ange den här formeln: = cusvlookup (D2, A1: B16,2) in i en tom cell där du vill placera resultatet och tryck på ange nyckel, alla motsvarande värden baserade på en specifik data har returnerats till en cell med mellanseparator, se skärmdump:

doc vlookup sammanfoga 4

Anmärkningar: I ovanstående formel: D2 anger de cellvärden som du vill slå upp, A1: B16 är det dataområde som du vill hämta data, numret 2 är kolumnnumret som det matchande värdet ska returneras från, kan du ändra dessa referenser till ditt behov.


Om du har Kutools för Excel, med dess Avancerade kombinera rader kan du snabbt avsluta det här jobbet med lätthet. Den här funktionen kan hjälpa dig att kombinera alla matchande värden med en specifik avgränsare baserat på samma data i en annan 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 få motsvarande värden baserat på specifika data.

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

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

doc vlookup sammanfoga 6

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

doc vlookup sammanfoga 7

5. Och klicka sedan på Ok -knappen, alla motsvarande värden baserade på samma värden har kombinerats med en specifik separator, se skärmdumpar:

doc vlookup sammanfoga 8 2 doc vlookup sammanfoga 9

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


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 (16)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Hur man får resultatet. Snälla hjälp. data data1 resultat a 1 a1 b 2 a2 c b1 b2 c1 c2
Denna kommentar minimerades av moderatoren på webbplatsen
När du använder cusvlookup finns det ett sätt att lägga till efternamnet också med ett kommatecken mellan som kan visas i kolumn C
Denna kommentar minimerades av moderatoren på webbplatsen
Älskade funktionen för Excel 2013 men ändrade den något för att ändra separeringstecknet till ";" istället för " " och ta sedan bort prefixet ";" från de sammanfogade värdena. Resultat som matchar värden i mitt exempel skulle ha ;result01 eller ;result01;result02 . Lade till den extra If Left(xResult, 1) = ";" för att ta bort eventuella extra ";" i början av strängen om det är det första tecknet. Jag är säker på att det finns ett snyggare sätt att göra det på, men det fungerade för mig. :) Funktion CusVlookup(pValue As String, pWorkRng As Range, PIndex As Long) Dim rng As Range Dim xResult As String xResult = "" För varje rng In pWorkRng If rng = pValue Then xResult = xResult & ";" & rng.Offset(1, pIndex - 0) If Left(xResult, 1) = ";" Då xResult = MID(xResult,1) End If End If Next CusVlookup = xResult End Function
Denna kommentar minimerades av moderatoren på webbplatsen
Gör om villkor för resultat om tomt.

Funktion CusVlookup(lookupval, lookuprange As Range, indexcol As Long)
'uppdatering av Extendoffice 20151118
Dim x As Range
Nedtonat resultat som sträng
resultat = ""
För varje x i uppslagsintervall
Om x = lookupval Då
Om inte resultat = "" Då
resultat = resultat & " " & x.Offset(0, indexcol - 1)
annars
resultat = x.Offset(0, indexcol - 1)
End If
Nästa x
CusVlookup = resultat
Änden Funktion
Denna kommentar minimerades av moderatoren på webbplatsen
Det här är fantastiskt men jag letar efter något annat, jag har en tabell med RollNo StudentName sub1, sub2, sub3 ... Totalt resultat, när jag anger Rollnumber ska det ge ett resultat som "SName Sub1 64, sub2 78,... Totalt 389, Resultat godkänt", är det möjligt
Denna kommentar minimerades av moderatoren på webbplatsen
Finns det något sätt att ta bort dubblettvärdena i sammanlänkningen?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Jakob,
Kanske kan följande artikel hjälpa dig att lösa ditt problem.
https://www.extendoffice.com/documents/excel/3381-excel-extract-unique-values-with-criteria.html

Försök gärna, hoppas det kan hjälpa dig!
Denna kommentar minimerades av moderatoren på webbplatsen
Finns det ett sätt att lista dubblettvärdena endast en gång, med hjälp av vba-koden och formeln ovan? Jag är inte säker på var jag ska placera countif>1-satsen i formelfältet eller i själva vba. Snälla hjälp
Denna kommentar minimerades av moderatoren på webbplatsen
du kan lägga till två extra villkor för att hoppa över tomma celler och för att hoppa över dubbletter:For i = 1 To CriteriaRange.Count
Om CriteriaRange.Cells(i).Value = Condition Then
Om ConcatenateRange.Cells(i).Value <> "" Hoppar över BANKER
Om InStr(xResult, ConcatenateRange.Cells(i).Value) = 0 Då 'HOPPAS OM DU HITTAR DUBLIKAT
xResult = xResult & Separator & ConcatenateRange.Cells(i).Value
End If
End If
End If
Nästa jag
Denna kommentar minimerades av moderatoren på webbplatsen
Jag måste säga att jag har försökt få en formel för att kombinera flera värden och återföra dem till en enda cell i 2 dagar nu. Detta "Hur gör man" har räddat mig!! Tack så mycket! Jag skulle aldrig ha fått det utan din modul!
Jag har dock 2 frågor. Jag har avgränsaren som ett kommatecken istället för ett mellanslag och på grund av det börjar det med ett komma. Finns det något sätt att förhindra startkomma men behålla resten?
Min andra fråga är; När jag använder fyllningshandtaget ändras intervallvärdena såväl som cellvärdet jag vill slå upp. Jag vill att den ska fortsätta att ändra cellnumret jag vill slå upp men behålla samma intervallvärden. Hur kan jag få detta att hända?

Tack så mycket för hjälpen!!
Denna kommentar minimerades av moderatoren på webbplatsen
cusVlookup fungerade utmärkt för mig. Ett annat sätt att ha en annan separator är att linda in två ersättningsfunktioner. Det första (inifrån och ut) ersätter det första utrymmet utan mellanslag, det andra ersätter alla andra utrymmen med ett " / " i mitt. Kan använda "," om du vill ha kommatecken.
=SUBSTITUTE(SUBSTITUTE(cusVlookup(D2,Tabell1,2)," ","",1)," "," / ")

Dessutom, om ditt uppslagsvärde inte är den första kolumnen kan du använda 0 eller negativa tal för att gå till kolumnen till vänster.
=SUBSTITUTE(SUBSTITUTE(cusVlookup(D2,Tabell1,-1)," ","",1)," "," / ")
Denna kommentar minimerades av moderatoren på webbplatsen
Hej jeff,
Tack för att du delar med dig, du måste vara en varmhjärtad man.
Denna kommentar minimerades av moderatoren på webbplatsen
Det här fungerar utmärkt för mig - finns det på något sätt att ändra det så att det kontrollerar om cellen innehåller snarare än en fullständig matchning? I grund och botten har jag en lista med uppgifter där:
Kolumn A: Beroenden (t.ex. 10003 10004 10008)
Kolumn B: Uppgiftsreferens (t.ex. 10001)
Kolumn C: Beroende uppgifter (kolumnen för formelresultatet) - där den skulle slå upp uppgiftsreferensen för att se vilka rader som innehåller den i kolumn A, och sedan lista uppgiftsreferensen för dessa uppgifter.

T.ex:

Rad | Kolumn A | Kolumn B | Kolumn C
1 | | 10001 | 10002 10003
2 | 10001 | 10002 | 10003
3 | 10001 10002 | 10003 |
Denna kommentar minimerades av moderatoren på webbplatsen
du skulle vilja använda funktionen Instr() som letar efter något i en textsträng i en cell. Du kan också använda Left() och Right() om du letar efter start- eller slutdetaljerna.
Denna kommentar minimerades av moderatoren på webbplatsen
Finns det något sätt att få det unika "namnet" för "klass1"
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, sym-john,
Kanske kan artikeln nedan lösa ditt problem, se den:
https://www.extendoffice.com/documents/excel/3381-excel-extract-unique-values-with-criteria.html
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