Hoppa till huvudinnehåll

Hur konverterar man matrisstabell till tre kolumner i Excel?

Om du antar att du har en matrisstabell som innehåller kolumnrubriker och radrubriker, och nu vill du konvertera denna stiltabell till tre kolumntabeller, det kallas också listtabell som följande skärmdump visas, har du några bra sätt att lösa detta problem i Excel?

Konvertera matrisstabell till lista med pivottabell

Konvertera matrisstabell till lista med VBA-kod

Konvertera matrisstabell för att lista med Kutools för Excel

doc konvertera matris till lista 1


I Excel finns det inte en direktfunktion för oss att konvertera matrisstabellen till tabellen med tre kolumner, men om du är bekant med PivotTable kan det göra dig en tjänst. Gör med följande steg:

1. Aktivera ditt kalkylblad som du vill använda och håll sedan ned Alt + D, och tryck sedan på P på tangentbordet, i poppade ut Pivottabell och PivotChart-guiden dialogrutan, välj Flera konsolideringsområden under Var är de data som du vill analysera avsnittet och välj sedan pivottabellen under Vilken typ av rapport vill du skapa avsnitt, se skärmdump:

doc konvertera matris till lista 2

2. Klicka sedan Nästa knappen, i Steg 2a av 3 guiden väljer du Jag kommer att skapa sidfält alternativ, se skärmdump:

doc konvertera matris till lista 3

3. Fortsätt klicka Nästa knappen, i Steg 2b av 3 guiden, klicka doc konvertera matris till lista 5 för att välja dataintervallet som du vill konvertera och klicka sedan på Lägg till för att lägga till dataområdet till Alla intervall listruta, se skärmdump:

doc konvertera matris till lista 4

4. och klicka Nästa knappen, in Steg 3 av 3 guiden, välj en plats för pivottabellen som du vill.

doc konvertera matris till lista 6

5. Klicka sedan Finish knapp har en pivottabell skapats på en gång, se skärmdump:

doc konvertera matris till lista 7

6. I pivottabellen dubbelklickar du på korsningscellen i Grand Total, i det här fallet dubbelklickar jag på cellen F22 och den genererar en tabell med tre kolumner enligt följande skärmdump:

doc konvertera matris till lista 8

7. Och slutligen kan du konvertera tabellformatet till det normala intervallet genom att välja tabellen och sedan välja Bord > Konvertera till Range från snabbmenyn, se skärmdump:

doc konvertera matris till lista 9


Om du inte gillar den första metoden kan följande VBA-kod också hjälpa dig.

1. Tryck Alt + F11 för att visa Microsoft Visual Basic för applikationer fönster.

2. Klicka på i fönstret Insert > Modulerna för att visa ett nytt modulfönster, kopiera och klistra sedan in följande VBA-kod i modulfönstret.

VBA-kod: Konvertera matrisstabell till lista

Sub ConvertTable()
'Update 20150512
Dim Rng As Range
Dim cRng As Range
Dim rRng As Range
Dim xOutRng As Range
xTitleId = "KutoolsforExcel"
Set cRng = Application.InputBox("Select your Column labels", xTitleId, Type:=8)
Set rRng = Application.InputBox("Select Your Row Labels", xTitleId, Type:=8)
Set Rng = Application.InputBox("Select your data", xTitleId, Type:=8)
Set outRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
Set xWs = Rng.Worksheet
k = 1
xColumns = rRng.Column
xRow = cRng.Row
For i = Rng.Rows(1).Row To Rng.Rows(1).Row + Rng.Rows.Count - 1
    For j = Rng.Columns(1).Column To Rng.Columns(1).Column + Rng.Columns.Count - 1
        outRng.Cells(k, 1) = xWs.Cells(i, xColumns)
        outRng.Cells(k, 2) = xWs.Cells(xRow, j)
        outRng.Cells(k, 3) = xWs.Cells(i, j)
        k = k + 1
    Next j
Next i
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 låta dig välja kolumnetiketter för data, se skärmdump:

doc konvertera matris till lista 10

4. Och klicka sedan på OK knappen, i nästa rutan, välj radetiketter, se skärmdump:

doc konvertera matris till lista 11

5. Fortsätt klicka OK, välj sedan dataintervallet exklusive kolumn- och radrubrikerna i snabbrutan, se skärmdump:

doc konvertera matris till lista 12

6. Och klicka sedan på OK, i den här dialogrutan, välj en cell där du vill hitta resultatet. Se skärmdump:

doc konvertera matris till lista 13

7. Äntligen klickar du på OK, och du får en tabell med tre kolumner samtidigt.


Båda ovanstående metoder är lite besvärliga, här presenterar jag dig på ett enkelt sätt - Kutools för Excel, med dess Transponera bordsmått kan du snabbt konvertera mellan en cellmatris och en listtabell.

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 Excelgör så här:

1. Klicka Kutools > Mätområde > Transponera bordsmått, se skärmdump:

2. I Transponera bordsmått dialog ruta:

(1.) Välj Korsa bordet för att lista alternativet under Transponera typ.

(2.) Och klicka sedan på doc konvertera matris till lista 5 knapp under Källans intervall för att välja det dataområde som du vill konvertera.

(3.) Klicka sedan på doc konvertera matris till lista 5 knapp under Resultatintervall för att välja en cell där du vill placera resultatet.

doc konvertera matris till lista 15

3. Och klicka sedan på OK -knappen, och du får följande resultat som inkluderar den ursprungliga cellformateringen:

doc konvertera matris till lista 16

Med detta verktyg, du också konvertera platt lista till tvådimensionellt tvärbord.

Om du vill veta mer om den här funktionen för transponerande tabellmått.

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!

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 (10)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Thanks for the tips. It's greatly saved my time and manual efforts.
This comment was minimized by the moderator on the site
Anybody know how to do this in a mac?
This comment was minimized by the moderator on the site
Sub ConvertTable_UseThis()

Dim Rng As Range
Dim cRng As Range
Dim rRng As Range
Dim xOutRng As Range
Dim xRng As Range, cRow As Integer, cCol As Integer


xTitleId = "Convert Table"
Set xRng = Application.Selection
Set xRng = Application.InputBox("Please select range:", "Number Range", Selection.Address, , , , , 8)
cRow = xRng.Rows.Count
cCol = xRng.Columns.Count


Set cRng = Range(xRng.Cells(1, 2), xRng.Cells(1, cCol))
Set rRng = Range(xRng.Cells(2, 1), xRng.Cells(cRow, 1))
Set Rng = Range(xRng.Cells(2, 2), xRng.Cells(cRow, cCol))
Set outRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
Set xWs = Rng.Worksheet
k = 1
xColumns = rRng.Column
xRow = cRng.Row
For i = Rng.Rows(1).Row To Rng.Rows(1).Row + Rng.Rows.Count - 1
For j = Rng.Columns(1).Column To Rng.Columns(1).Column + Rng.Columns.Count - 1
outRng.Cells(k, 1) = xWs.Cells(i, xColumns)
outRng.Cells(k, 2) = xWs.Cells(xRow, j)
outRng.Cells(k, 3) = xWs.Cells(i, j)
k = k + 1
Next j
Next i
End Sub
This comment was minimized by the moderator on the site
For the VBA Code, one seems to really need this:xColumns = cRng.Column
xRow = rRng.Row
This comment was minimized by the moderator on the site
do you have a code with a tweak where the leftmost column of a selection is column labels and the topmost row of a selection is row labels?

Thanks in advance,
This comment was minimized by the moderator on the site
Sub ConvertTable_UseThis()

Dim Rng As Range
Dim cRng As Range
Dim rRng As Range
Dim xOutRng As Range
Dim xRng As Range, cRow As Integer, cCol As Integer


xTitleId = "Convert Table"
Set xRng = Application.Selection
Set xRng = Application.InputBox("Please select range:", "Number Range", Selection.Address, , , , , 8)
cRow = xRng.Rows.Count
cCol = xRng.Columns.Count


Set cRng = Range(xRng.Cells(1, 2), xRng.Cells(1, cCol))
Set rRng = Range(xRng.Cells(2, 1), xRng.Cells(cRow, 1))
Set Rng = Range(xRng.Cells(2, 2), xRng.Cells(cRow, cCol))
Set outRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
Set xWs = Rng.Worksheet
k = 1
xColumns = rRng.Column
xRow = cRng.Row
For i = Rng.Rows(1).Row To Rng.Rows(1).Row + Rng.Rows.Count - 1
For j = Rng.Columns(1).Column To Rng.Columns(1).Column + Rng.Columns.Count - 1
outRng.Cells(k, 1) = xWs.Cells(i, xColumns)
outRng.Cells(k, 2) = xWs.Cells(xRow, j)
outRng.Cells(k, 3) = xWs.Cells(i, j)
k = k + 1
Next j
Next i
End Sub
This comment was minimized by the moderator on the site
Thanks a Ton, really appreciate the way you have explained. very useful
This comment was minimized by the moderator on the site
Thanks alot for this useful tool
This comment was minimized by the moderator on the site
Thanks, this was exactly what I was looking for. Awesome:)
This comment was minimized by the moderator on the site
what if i have 4 or more column?
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations