Gå til hovedindhold

Hvordan konverteres matrix stil tabel til tre kolonner i Excel?

Antag, at du har en matrix-stil tabel, der indeholder kolonneoverskrifter og rækkeoverskrifter, og nu vil du gerne konvertere denne typetabel til tre kolonnetabeller, det kaldes også listetabeller som følgende skærmbillede vist, har du nogen gode måder at løse dette på problem i Excel?

Konverter matrix stil tabel til liste med pivottabel

Konverter matrix stil tabel til liste med VBA-kode

Konverter matrix stil tabel til liste med Kutools til Excel

doc konvertere matrix til liste 1


I Excel er der ikke en direkte funktion for os at konvertere matrix-stiltabellen til tre kolonnetabeller, men hvis du er bekendt med PivotTable, kan det gøre dig en tjeneste. Benyt følgende trin:

1. Aktivér dit regneark, som du vil bruge, og hold derefter nede Alt + D, og tryk derefter på P på tastaturet, i poppet ud Pivottabel og PivotChart-guide dialog, vælg Flere konsolideringsområder under Hvor er de data, du vil analysere sektion, og vælg derefter Pivottabel under Hvilken slags rapport vil du oprette sektion, se skærmbillede:

doc konvertere matrix til liste 2

2. Klik derefter på Næste knappen, i Trin 2a af 3 guiden, skal du vælge Jeg opretter sidefelterne mulighed, se skærmbillede:

doc konvertere matrix til liste 3

3. Fortsæt med at klikke Næste knappen, i Trin 2b af 3 guiden, klik doc konvertere matrix til liste 5 for at vælge det dataområde, du vil konvertere, og klik derefter på Tilføj for at tilføje dataområdet til Alle intervaller listefelt, se skærmbillede:

doc konvertere matrix til liste 4

4. og klik Næste knap, ind Trin 3 af 3 guiden, skal du vælge en placering til pivottabellen, som du vil.

doc konvertere matrix til liste 6

5. Klik derefter på Finish knap, der er oprettet en pivottabel med det samme, se skærmbillede:

doc konvertere matrix til liste 7

6. I pivottabellen skal du dobbeltklikke på den krydsende celle i Grand Total, i dette tilfælde vil jeg dobbeltklikke på cellen F22, og den genererer en tabel med tre kolonner som følgende skærmbillede vist:

doc konvertere matrix til liste 8

7. Og endelig kan du konvertere tabelformatet til det normale interval ved at vælge tabellen og derefter vælge Bordlampe > Konverter til rækkevidde fra kontekstmenuen, se skærmbillede:

doc konvertere matrix til liste 9


Hvis du ikke kan lide den første metode, kan følgende VBA-kode også hjælpe dig.

1. Trykke Alt + F11 for at vise Microsoft Visual Basic til applikationer vindue.

2. Klik på i vinduet indsatte > Moduler for at vise et nyt modulvindue, kopier og indsæt derefter følgende VBA-kode i modulvinduet.

VBA-kode: Konverter matrixstiltabel til liste

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. Tryk derefter på F5 nøgle til at køre denne kode, og der vises en hurtigboks, der giver dig mulighed for at vælge kolonnetiketterne på dataene, se skærmbillede:

doc konvertere matrix til liste 10

4. Og klik derefter på OK knap, vælg rækkeetiketterne i den næste promptboks, se skærmbillede:

doc konvertere matrix til liste 11

5. Fortsæt med at klikke OK, vælg derefter dataområdet eksklusive kolonne- og rækkeoverskrifter i promptfeltet, se skærmbillede:

doc konvertere matrix til liste 12

6. Og klik derefter på OK, i denne dialogboks skal du vælge en celle, hvor du vil finde resultatet. Se skærmbillede:

doc konvertere matrix til liste 13

7. Endelig skal du klikke på OK, og du får en tabel med tre kolonner på én gang.


Begge ovenstående metoder er noget besværlige, her vil jeg introducere dig på en nem måde - Kutools til Excel, Med Transponer borddimensioner funktion, kan du hurtigt konvertere mellem en matrix af celler og en listetabel.

Kutools til Excel : med mere end 300 praktiske Excel-tilføjelsesprogrammer, gratis at prøve uden begrænsning på 30 dage

Efter installation Kutools til Excelskal du gøre som følger:

1. Klik Kutools > Range > Transponer borddimensioner, se skærmbillede:

2. I Transponer borddimensioner dialog boks:

(1.) Vælg Kryds bord for at liste mulighed under Transponere type.

(2.) Og klik derefter på doc konvertere matrix til liste 5 knappen under Kildeområde for at vælge det dataområde, du vil konvertere.

(3.) Klik derefter på doc konvertere matrix til liste 5 knappen under Resultaterne varierer for at vælge en celle, hvor du vil placere resultatet.

doc konvertere matrix til liste 15

3. Og klik derefter på OK knappen, og du får følgende resultat, der inkluderer den originale celleformatering:

doc konvertere matrix til liste 16

Med dette værktøj, du også konvertere fladlistetabel til 2-dimensionelt krydstabel.

For at vide mere om denne transponerende tabel Dimensions-funktion.

Download og gratis prøveversion Kutools til Excel nu!


Kutools til Excel: med mere end 300 praktiske Excel-tilføjelsesprogrammer, gratis at prøve uden begrænsning på 30 dage. Download og gratis prøveversion nu!

Bedste kontorproduktivitetsværktøjer

🤖 Kutools AI Aide: Revolutionér dataanalyse baseret på: Intelligent udførelse   |  Generer kode  |  Opret brugerdefinerede formler  |  Analyser data og generer diagrammer  |  Aktiver Kutools funktioner...
Populære funktioner: Find, fremhæv eller identificer dubletter   |  Slet tomme rækker   |  Kombiner kolonner eller celler uden at miste data   |   Runde uden formel ...
Super opslag: VLookup med flere kriterier    Multiple Value VLookup  |   VOpslag på tværs af flere ark   |   Fuzzy Lookup ....
Avanceret rulleliste: Opret hurtigt rulleliste   |  Afhængig rulleliste   |  Multivælg rulleliste ....
Column Manager: Tilføj et bestemt antal kolonner  |  Flyt kolonner  |  Skift synlighedsstatus for skjulte kolonner  |  Sammenlign områder og kolonner ...
Fremhævede funktioner: Grid fokus   |  Designvisning   |   Stor Formel Bar    Arbejdsbog & Ark Manager   |  Ressourcebibliotek (Autotekst)   |  Datovælger   |  Kombiner regneark   |  Krypter/Dekrypter celler    Send e-mails efter liste   |  Superfilter   |   Specielt filter (filter fed/kursiv/gennemstreget...) ...
Top 15 værktøjssæt12 tekst Værktøjer (tilføje tekst, Fjern tegn, ...)   |   50 + Chart Typer (Gantt kort, ...)   |   40+ Praktisk formler (Beregn alder baseret på fødselsdag, ...)   |   19 Indsættelse Værktøjer (Indsæt QR-kode, Indsæt billede fra sti, ...)   |   12 Konvertering Værktøjer (Tal til ord, Valutaomregning, ...)   |   7 Flet og del Værktøjer (Avancerede kombinere rækker, Opdel celler, ...)   |   ... og mere

Overlad dine Excel-færdigheder med Kutools til Excel, og oplev effektivitet som aldrig før. Kutools til Excel tilbyder over 300 avancerede funktioner for at øge produktiviteten og spare tid.  Klik her for at få den funktion, du har mest brug for...

Beskrivelse


Fanen Office bringer en grænseflade til et kontor med Office, og gør dit arbejde meget lettere

  • Aktiver redigering og læsning af faner i Word, Excel, PowerPoint, Publisher, Access, Visio og Project.
  • Åbn og opret flere dokumenter i nye faner i det samme vindue snarere end i nye vinduer.
  • Øger din produktivitet med 50 % og reducerer hundredvis af museklik for dig hver 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