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 matrisformel

Här är en matrisformel som också kan hjälpa dig att extrahera unika värden från flera kolumner.

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:


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.


Extrahera unika värden från en enda kolumn med en fantastisk funktion

Ibland måste du extrahera de unika värdena från en enda kolumn, ovanstående metoder hjälper dig inte, här kan jag rekommendera ett användbart verktyg-Kutools för Excel, med dess Extrahera celler med unika värden (inkludera den första duplikaten) verktyget kan du snabbt extrahera de unika värdena.

Notera:Att tillämpa detta Extrahera celler med unika värden (inkludera den första duplikaten)Fö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. Klicka på en cell där du vill mata ut resultatet. (Anmärkningar: Klicka inte på en cell i första raden.)

2. Klicka sedan Kutools > Formel Helper > Formel Helper, se skärmdump:

3. I Formlerhjälpare dialogrutan, gör följande:

  • Välja text alternativ från Formel Typ rullgardinsmeny;
  • Sedan Välj Extrahera celler med unika värden (inkludera den första duplikaten) från Välj en fromula listruta;
  • I den högra Argumentinmatning Välj en lista med celler som du vill extrahera unika värden.

4. Klicka sedan Ok och dra påfyllningshanteraren över till cellerna som du vill lista alla unika värden tills tomma celler visas, se skärmdump:

Gratis nedladdning Kutools för Excel nu!


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

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 (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