Hoppa till huvudinnehåll

Hur extraherar jag unika värden från flera kolumner i Excel?

Om du antar att du har flera kolumner med flera värden, upprepas vissa värden i samma kolumn eller olika kolumn. Och nu vill du bara hitta de värden som finns i endera kolumnen en gång. Finns det några snabba knep för att extrahera unika värden från flera kolumner i Excel?


Extrahera unika värden från flera kolumner med formler

Det här avsnittet kommer att täcka två formler: en med en matrisformel som är lämplig för alla Excel-versioner och en annan med en dynamisk matrisformel specifikt för Excel 365.

Extrahera unika värden från flera kolumner med Array-formel för alla Excel-versioner

För användare med valfri version av Excel kan matrisformler vara ett kraftfullt verktyg för att extrahera unika värden över flera kolumner. Så här kan du göra det:

1. Förutsatt att dina värden ligger inom intervallet A2: C9, ange följande formel i cell E2:

=INDIRECT(TEXT(MIN(IF(($A$2:$C$9<>"")*(COUNTIF($E$1:E1,$A$2:$C$9)=0),ROW($2:$9)*100+COLUMN($A:$C),7^8)),"R0C00"),)&""
Anmärkningar: I ovanstående formel, A2: C9 anger det cellintervall som du vill extrahera de unika värdena, E1: E1 är den första cellen i kolumnen du vill placera resultatet, $ 2: $ 9 står för raderna innehåller cellerna du vill använda, och $ A: $ C anger att kolumnerna innehåller de celler du vill använda. Ändra dem till dina egna.

2. Tryck sedan på Skift + Ctrl + Enter och dra sedan i fyllningshandtaget för att extrahera de unika värdena tills tomma celler visas. Se skärmdump:

Förklaring av denna formel:
  1. $ A $ 2: $ C $ 9: Detta anger dataintervallet som ska kontrolleras, vilket är cellerna från A2 till C9.
  2. IF(($A$2:$C$9<>"")*(COUNTIF($E$1:E1,$A$2:$C$9)=0), ROW($2:$9)*100+COLUMN($A:$C), 7^8):
    • $A$2:$C$9<>"" kontrollerar om cellerna i området inte är tomma.
    • COUNTIF($E$1:E1,$A$2:$C$9)=0 bestämmer om värdena för dessa celler ännu inte har listats i intervallet av celler från E1 till E1.
    • Om båda villkoren är uppfyllda (dvs värdet är inte tomt och ännu inte listat i kolumn E), beräknar IF-funktionen ett unikt tal baserat på dess rad och kolumn (RAD($2:$9)*100+COLUMN($A: $C)).
    • Om villkoren inte är uppfyllda returnerar funktionen ett stort tal (7^8), som fungerar som en platshållare.
  3. MIN(...): Hittar det minsta talet som returneras av IF-funktionen ovan, motsvarande platsen för nästa unika värde.
  4. TEXT(...,"R0C00"): Konverterar detta minsta antal till en adress i R1C1-stil. Formatkoden R0C00 indikerar konverteringen av numret till Excel-cellreferensformat.
  5. INDIREKT(...): Använder funktionen INDIREKT för att konvertera R1C1-stiladressen som genererades i föregående steg tillbaka till en normal A1-cellreferens. Funktionen INDIREKTA tillåter cellreferenser baserat på innehållet i en textsträng.
  6. &"": Att lägga till &"" i slutet av formeln säkerställer att den slutliga utmatningen behandlas som text, så att jämna nummer visas som text.
 
Extrahera unika värden från flera kolumner med formeln för Excel 365

Excel 365 stöder dynamiska arrayer, vilket gör det mycket lättare att extrahera unika värden från flera kolumner:

Ange eller kopiera följande formel till en tom cell där du vill placera resultatet och klicka sedan ange nyckel för att få alla unika värden på en gång. Se skärmdump:

=UNIQUE(TOCOL(A2:C9,1))


Extrahera unika värden från flera kolumner med Kutools AI Aide

Släpp loss kraften hos Kutools AI Aide för att sömlöst extrahera unika värden från flera kolumner i Excel. Med bara några få klick sållar det här intelligenta verktyget igenom dina data, identifierar och listar unika poster över alla valda intervall. Glöm krånglet med komplexa formler eller vba-kod; Omfamna effektiviteten av Kutools AI Aide och förvandla ditt Excel-arbetsflöde till en mer produktiv och felfri upplevelse.

Anmärkningar: För att använda detta Kutools AI Aide of Kutools för ExcelBer ladda ner och installera Kutools för Excel först.

När du har installerat Kutools för Excel, klicka Kutools AI > AI-assistent att öppna Kutools AI Aide ruta:

  1. Skriv ditt krav i chattrutan och klicka Skicka knappen eller tryck på ange nyckel för att skicka frågan;
    "Extrahera unika värden från intervallet A2:C9, ignorera tomma celler, och placera resultaten med början på E2:"
  2. Efter att ha analyserat, klicka Utförande knappen för att köra. Kutools AI Aide kommer att behandla din förfrågan med AI och returnera resultaten i den angivna cellen direkt i Excel.


Extrahera unika värden från flera kolumner med pivottabellen

Om du är bekant med pivottabellen kan du enkelt extrahera de unika värdena från flera kolumner med följande steg:

1. Först ska du infoga en ny tom kolumn till vänster om dina data. I det här exemplet infogar jag kolumn A bredvid originaldata.

2. Klicka på en cell i dina data och tryck på Alt + D och tryck sedan på P knappen omedelbart för att öppna Pivottabell och PivotChart-guidenväljer Flera konsolideringsområden i guiden steg 1, se skärmdump:

3. Klicka sedan Nästa knappen, kolla Skapa ett enda sidfält åt mig alternativ i guiden steg 2, se skärmdump:

4. Fortsätt klicka Nästa klicka för att välja dataintervall som inkluderar den vänstra nya kolumnen med celler och klicka sedan på Lägg till för att lägga till dataområdet till Alla intervall listruta, se skärmdump:

5. När du har valt dataområdet fortsätter du att klicka Nästa, i guiden steg 3, välj var du vill placera pivottabellrapporten som du vill.

6. Äntligen klickar du på Finish för att slutföra guiden och en pivottabell har skapats i det aktuella kalkylbladet och avmarkera sedan alla fält från Välj fält att lägga till i rapporten avsnitt, se skärmdump:

7. Kontrollera sedan fältet Värde eller dra värdet till rader etikett, nu får du de unika värdena från flera kolumner enligt följande:


Extrahera unika värden från flera kolumner med VBA-kod

Med följande VBA-kod kan du också extrahera unika värden från flera kolumner.

1. Håll ner ALT + F11 knapparna och det öppnar Microsoft Visual Basic for Applications-fönstret.

2. Klicka Insert > Modulernaoch klistra in följande kod i modulfönstret.

VBA: Extrahera unika värden från flera kolumner

Sub Uniquedata()
'Updateby Extendoffice
Dim rng As Range
Dim InputRng As Range, OutRng As Range
Set dt = CreateObject("Scripting.Dictionary")
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
For Each rng In InputRng
    If rng.Value <> "" Then
        dt(rng.Value) = ""
    End If
Next
OutRng.Range("A1").Resize(dt.Count) = Application.WorksheetFunction.Transpose(dt.Keys)
End Sub

3. Tryck sedan på F5 för att köra den här koden, och en snabbruta dyker upp för att påminna dig om att välja det dataområde som du vill använda. Se skärmdump:

4. Och klicka sedan på OK, kommer en annan rutan att visas för att låta dig välja en plats att placera resultatet, se skärmdump:

5. Klicka OK för att stänga denna dialog och alla unika värden har extraherats på en gång.


Fler relativa artiklar:

  • Räkna antalet unika och distinkta värden från en lista
  • Om du antar att du har en lång lista med värden med några dubbletter, nu vill du räkna antalet unika värden (värdena som visas i listan bara en gång) eller distinkta värden (alla olika värden i listan betyder det unikt värden + 1: a dubbla värden) i en kolumn som vänster skärmdump visas. Den här artikeln kommer jag att prata om hur man hanterar detta jobb i Excel.
  • Extrahera unika värden baserat på kriterier i Excel
  • Om du antar att du har följande dataintervall som du bara vill lista de unika namnen på kolumn B baserat på ett specifikt kriterium i kolumn A för att få resultatet enligt nedanstående skärmdump. Hur kan du hantera den här uppgiften i Excel snabbt och enkelt?
  • Tillåt bara unika värden i Excel
  • Om du bara vill behålla unika värden i en kolumn i kalkylbladet och förhindra dubbletter, kommer den här artikeln att presentera några snabba knep för dig att hantera den här uppgiften.
  • Summa unika värden baserade på kriterier i Excel
  • Till exempel har jag en rad data som innehåller kolumnerna Namn och ordning, nu för att bara summera unika värden i kolumnen Order baserat på kolumnen Namn enligt följande skärmdump. Hur löser jag den här uppgiften snabbt och enkelt i Excel?

Bästa kontorsproduktivitetsverktyg

🤖 Kutools AI Aide: Revolutionera dataanalys baserat på: Intelligent utförande   |  Generera kod  |  Skapa anpassade formler  |  Analysera data och generera diagram  |  Anropa Kutools funktioner.
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...

Beskrivning


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 (31)
Rated 5 out of 5 · 1 ratings
This comment was minimized by the moderator on the site
Thank you for this solution, however what if the columns are in separate excel sheet? or is in separate columns instead of a table?
This comment was minimized by the moderator on the site
Hello, Jon,
The methods in this article ar only works well for a range of data, if your data in separate columns, you should copy and paste them into one range first, and then apply the formula or VBA code.
Thank you!
This comment was minimized by the moderator on the site
Thank you for this great article.

For people who are using the array formular in non-English Excel there must be taken special care of the text format string: in your example: "R0C00".
For German this would translate to "Z0S00". However, "S" is a special character refering to seconds for time formating. This character needs to be escaped and therefore the correct format string for German Excel is "Z0\S00".

I hope this helps someone in the future :-)
This comment was minimized by the moderator on the site
Hello, Michael H.
Thanks for your kindly explanation.
Hope this can help others in the future.😄
This comment was minimized by the moderator on the site
Thank you for this great article.

For people who are using the array formular in non-English Excel there must be taken special care of the text format string: in your example: "R0C00".
For German this would translate to "Z0S00". However, "S" is a special character refering to seconds for time formating. This character needs to be escaped and therefore the correct format string for German Excel is "Z0\S00".

I hope this helps someone in the future :-)
This comment was minimized by the moderator on the site
Hello Sir! The VBA worked wonders, thank you very much for that! I was wondering, If I change the original data, is it possible to refresh the column with the unique values automatically?
Rated 5 out of 5
This comment was minimized by the moderator on the site
Hello Ioannis,

Glad to help. After you change the original data, the VBA can not refresh the result automatically. And the easiest way I can think of is to press Ctrl + Alt + F9 to refresh all results in worksheets in all open workbooks. Have a nice day.

Sincerely,
Mandy
This comment was minimized by the moderator on the site
The array formula at the top is working great when used with data in the same sheet, however when I try to use it to reference the same exact data from another sheet the formula returns nothing. I'm unable to figure out why. Is there a limitation with array functions that prevents you from referencing ranges in a different sheet?

Thanks for any insight you can provide.
This comment was minimized by the moderator on the site
Hello Erin,

Glad to help. The INDIRECT function in this formula is more complicated to use when referencing data in other worksheets. It is not recommended to use this feature when referencing ranges in different worksheets.

For example: Now the data is in Sheet1, I want to reference the content of cell C2 of Sheet1 in Sheet2. First, in any two cells in Sheet2, such as D1 and D2, enter Sheet1 and C2, respectively. At this point, enter the formula in the empty cell of Sheet2:
=INDIRECT("'"&D1&"'!"&D2), then the content of cell C2 in Sheet1 can be returned.

As you can see, it make things way more complex. Hope my explanation can help. Have a nice day.

Sincerely,
Mandy
This comment was minimized by the moderator on the site
Czy to żart?
This comment was minimized by the moderator on the site
can we create uniqdata function instead of macro?
This comment was minimized by the moderator on the site
Hi, İlhan,If you like a User Defined Function to create a formula for solving this problem, the below code may help you:After inserting the code, select a list of cells where you want to put the results. Then type this formula:=Uniques(A1:C4)  in the formula bar.Press Ctrl+Shift+Enter keys together. 


Function Uniques(ByVal inputRange As Range)
Dim inputArray As Variant
Dim myColl As New Collection
Dim xVal As Variant
Dim outArray() As Variant
On Error Resume Next
With inputRange
inputArray = Application.Intersect(.Cells, .Parent.UsedRange).Value
End With
On Error GoTo 0
On Error Resume Next
For Each xVal In inputArray
myColl.*** Item:=xVal, Key:=(CStr(xVal) & TypeName(xVal))
Next xVal
myColl.Remove "String"
On Error GoTo 0
ReDim outArray(1 To Application.Max(myColl.Count, Application.Caller.Cells.Count))
For xVal = 1 To UBound(outArray)
outArray(xVal) = vbNullString
Next xVal
For xVal = 1 To Application.Min(myColl.Count, Application.Caller.Cells.Count)
outArray(xVal) = myColl(xVal)
Next xVal
If Application.Caller.Columns.Count = 1 Then
Uniques = Application.Transpose(outArray)
Else
Uniques = outArray
End If
End Function
This comment was minimized by the moderator on the site
Thanks for the code. I'm using the VBA code of this page. Is there a way to add a sorting code after the unique values are extracted so it sorts it automatically?
This comment was minimized by the moderator on the site
Regarding the formula version, could you explain in more detail what this portion is doing? *100+COLUMN($A:$C),7^8)),"R0C00") Specifically, what are the *100, 7^8, and "R0C000" doing? I'm understanding everything else, but I can't figure out what these are for.
This comment was minimized by the moderator on the site
Little late for my response here but...
ROW($2:$9)*100 - this is multiplying the row number *100, so if it's in row 5, now the number is 500
COLUMN($A:$C) - this gets added to the row*100 number, so if it's row 5 col 2, then the number is 502.
7^8)), - this (I think) is to have a max value for the min statement from earlier.
"R0C00") - this formats the text based on the number. In the example, we had 502 so this gives R5C02 (row 5, col 02).

If you have a lot of columns but not many rows, then you could change it to ROW($2:$9)*1000+COLUMN($A:$C),7^8)),"R0C000")
This comment was minimized by the moderator on the site
i've adjusted to my sheet but am only returning the first value in the defined array... what am i missing?
This comment was minimized by the moderator on the site
Hello, Cody,
The above formula works well in my worksheet, could you give a screenshot of your data problem here?
Thank you!
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