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
Bästa kontorsproduktivitetsverktyg
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...
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!