Hur transponerar man celler i en kolumn baserat på unika värden i en annan kolumn?
Om du antar att du har en rad data som innehåller två kolumner, nu vill du transponera celler i en kolumn till horisontella rader baserat på unika värden i en annan kolumn för att få följande resultat. Har du några bra idéer för att lösa detta problem i Excel?
Transponera celler i en kolumn baserat på unika värden med formler
Transponera celler i en kolumn baserat på unika värden med VBA-kod
Transponera celler i en kolumn baserat på unika värden med Kutools för Excel
Transponera celler i en kolumn baserat på unika värden med formler
Med följande matrisformler kan du extrahera de unika värdena och transponera deras motsvarande data i horisontella rader, gör så här:
1. Ange denna matrisformel: = INDEX ($ A $ 2: $ A $ 16, MATCH (0, COUNTIF ($ D $ 1: $ D1, $ A $ 2: $ A $ 16), 0)) till en tom cell, till exempel D2, och tryck på Skift + Ctrl + Enter för att få rätt resultat, se skärmdump:
Anmärkningar: I ovanstående formel, A2: A16 är den kolumn som du vill lista de unika värdena från, och D1 är cellen ovanför denna formelcell.
2. Dra sedan fyllningshandtaget ner till cellerna för att extrahera alla unika värden, se skärmdump:
3. Och fortsätt sedan med att ange denna formel i cell E2: =IFERROR(INDEX($B$2:$B$16, MATCH(0, COUNTIF($D2:D2,$B$2:$B$16)+IF($A$2:$A$16<>$D2, 1, 0), 0)), 0)och kom ihåg att trycka på Skift + Ctrl + Enter för att få resultatet, se skärmdump:
Anmärkningar: I ovanstående formel: B2: B16 är den kolumninformation som du vill transponera, A2: A16 är den kolumn som du vill transponera värdena baserat på, och D2 innehåller det unika värdet som du har extraherat i steg 1.
4. Dra sedan påfyllningshandtaget till höger om cellerna som du vill visa de transponerade data tills visar 0, se skärmdump:
5. Och fortsätt sedan med att dra påfyllningshandtaget ner till cellområdet för att få den transponerade informationen enligt följande skärmdump:
Transponera celler i en kolumn baserat på unika värden med VBA-kod
Kan vara att formlerna är komplexa för dig att förstå, här kan du köra följande VBA-kod för att få det önskade resultatet du behöver.
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: Transponera celler i en kolumn baserat på unika värden i en annan kolumn:
Sub transposeunique()
'updateby Extendoffice
Dim xLRow As Long
Dim i As Long
Dim xCrit As String
Dim xCol As New Collection
Dim xRg As Range
Dim xOutRg As Range
Dim xTxt As String
Dim xCount As Long
Dim xVRg As Range
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("please select data range(only two columns):", "Kutools for Excel", xTxt, , , , , 8)
Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
If xRg Is Nothing Then Exit Sub
If (xRg.Columns.Count <> 2) Or _
(xRg.Areas.Count > 1) Then
MsgBox "the used range is only one area with two columns ", , "Kutools for Excel"
Exit Sub
End If
Set xOutRg = Application.InputBox("please select output range(specify one cell):", "Kutools for Excel", xTxt, , , , , 8)
If xOutRg Is Nothing Then Exit Sub
Set xOutRg = xOutRg.Range(1)
xLRow = xRg.Rows.Count
For i = 2 To xLRow
xCol.Add xRg.Cells(i, 1).Value, xRg.Cells(i, 1).Value
Next
Application.ScreenUpdating = False
For i = 1 To xCol.Count
xCrit = xCol.Item(i)
xOutRg.Offset(i, 0) = xCrit
xRg.AutoFilter Field:=1, Criteria1:=xCrit
Set xVRg = xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible)
If xVRg.Count > xCount Then xCount = xVRg.Count
xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible).Copy
xOutRg.Offset(i, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = False
Next
xOutRg = xRg.Cells(1, 1)
xOutRg.Offset(0, 1).Resize(1, xCount) = xRg.Cells(1, 2)
xRg.Rows(1).Copy
xOutRg.Resize(1, xCount + 1).PasteSpecial Paste:=xlPasteFormats
xRg.AutoFilter
Application.ScreenUpdating = True
End Sub
3. Tryck sedan på F5 nyckel 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 du vill använda, se skärmdump:
4. Och klicka sedan på OK -knappen, kommer en annan snabbruta att dyka upp för att påminna dig om att välja en cell för att sätta resultatet, se skärmdump:
6. Klicka OK och data i kolumn B har transponerats baserat på unika värden i kolumn A, se skärmdump:
Transponera celler i en kolumn baserat på unika värden med Kutools för Excel
Om du har Kutools för Excel, kombinerar Avancerade kombinera rader och Dela celler verktyg kan du snabbt avsluta den här uppgiften utan några formler eller kod.
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 du vill använda. (Om du vill behålla originaldata, vänligen kopiera och klistra in data till en annan plats först.)
2. Klicka sedan Kutools > Slå ihop och dela > Avancerade kombinera rader, se skärmdump:
3. I Kombinera rader baserat på kolumn dialogrutan, gör följande:
(1.) Klicka på det kolumnnamn som du vill transponera data baserat på och välj Primärnyckel;
(2.) Klicka på en annan kolumn som du vill transponera och klicka på Kombinera välj sedan en separator för att separera de kombinerade uppgifterna, till exempel mellanslag, komma, semikolon.
4. Klicka sedan Ok knappen har data i kolumn B kombinerats i en cell baserat på kolumn A, se skärmdump:
5. Välj sedan de kombinerade cellerna och klicka Kutools > Slå ihop och dela > Dela celler, se skärmdump:
6. I Dela celler dialogrutan väljer du Dela upp till kolumner under Typ alternativ och välj sedan avgränsaren som separerar dina kombinerade data, se skärmdump:
7. Klicka sedan Ok och välj en cell för att placera det delade resultatet i dialogrutan som visas, se skärmdump:
8. Klicka OK, och du får resultatet efter behov. Se skärmdump:
Ladda ner och testa gratis Kutools för Excel nu!
Demo: Transponera celler i en kolumn baserat på unika värden med Kutools för Excel
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.

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!
















































