Прескочи на основното съдържание

Как да конвертирате таблица със стил на матрица в три колони в Excel?

Автор: Xiaoyang Последна промяна: 2020-05-26

Да предположим, че имате таблица в матричен стил, която съдържа заглавия на колони и заглавия на редове, и сега бихте искали да преобразувате тази стилова таблица в таблица с три колони, тя също се нарича таблица със списък, както е показано на следната екранна снимка, имате ли някакви добри начини да решите това проблем в Excel?

Преобразувайте таблица със стил на матрица в списък с PivotTable

Преобразувайте таблицата със стил на матрица в списък с VBA код

Преобразувайте таблица със стил на матрица в списък с Kutools за Excel

doc конвертиране на матрица в списък 1


В Excel няма директна функция за преобразуване на таблицата със стил на матрица в таблица с три колони, но ако сте запознати с PivotTable, може да ви направи услуга. Моля, направете следните стъпки:

1. Активирайте вашия работен лист, който искате да използвате, след което задръжте Alt + D, след което натиснете P в клавиатурата, в изскочи Съветник за обобщена таблица и обобщена диаграма диалогов прозорец, изберете Множество диапазони на консолидация под Къде са данните, които искате да анализирате раздел и след това изберете Осева таблица под Какъв вид отчет искате да създадете раздел, вижте екранна снимка:

doc конвертиране на матрица в списък 2

2, След това кликнете Напред бутон, в Стъпка 2a от 3 съветник, изберете Ще създам полетата на страницата опция, вижте екранна снимка:

doc конвертиране на матрица в списък 3

3. Продължете да щракате Напред бутон, в Стъпка 2б от 3 съветника, щракнете върху doc конвертиране на матрица в списък 5 за да изберете диапазона от данни, който искате да конвертирате, и след това щракнете върху Добави бутон за добавяне на диапазона от данни към Всички диапазони списъчно поле, вижте екранна снимка:

doc конвертиране на матрица в списък 4

4, И натиснете Напред бутон, в Стъпка 3 на 3 съветник, изберете местоположение за обобщената таблица, както желаете.

doc конвертиране на матрица в списък 6

5, След това кликнете завършеност бутон, осевата таблица е създадена наведнъж, вижте екранната снимка:

doc конвертиране на матрица в списък 7

6. В осевата таблица щракнете двукратно върху пресичащата клетка на общата сума, в този случай аз ще щракна двукратно върху клетка F22 и тя ще генерира таблица с три колони, както е показано на следната екранна снимка:

doc конвертиране на матрица в списък 8

7. И накрая, можете да конвертирате формата на таблицата в нормалния диапазон, като изберете таблицата и след това изберете Маса > Преобразуване в диапазон от контекстното меню вижте екранната снимка:

doc конвертиране на матрица в списък 9


Ако не харесвате първия метод, следният VBA код също може да ви помогне.

1, Натиснете Alt + F11 за показване на Microsoft Visual Basic за приложения прозорец.

2. В прозореца щракнете Поставете > Модули за да покажете нов прозорец на модула, след това копирайте и поставете следния VBA код в прозореца на модула.

VBA код: Преобразувайте таблицата със стил на матрица в списък

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. След това натиснете F5 за изпълнение на този код и изскача поле за подкана, което ви позволява да изберете етикетите на колоните на данните, вижте екранната снимка:

doc конвертиране на матрица в списък 10

4, И после щракнете върху OK бутон, в следващото поле за подкана изберете етикетите на редовете, вижте екранната снимка:

doc конвертиране на матрица в списък 11

5. Продължете да щракате OK, след това изберете диапазона от данни, с изключение на заглавията на колоните и редовете в полето за подкана, вижте екранната снимка:

doc конвертиране на матрица в списък 12

6, И после щракнете върху OK, в този диалогов прозорец изберете клетка, в която искате да намерите резултата. Вижте екранна снимка:

doc конвертиране на матрица в списък 13

7. Най-накрая щракнете OK, и ще получите таблица с три колони наведнъж.


И двата метода по-горе са донякъде обезпокоителни, тук ще ви представя един лесен начин -- Kutools за Excel, Със своята Транспониране на размерите на таблицата функция, можете бързо да конвертирате между матрица от клетки и таблица със списък.

Kutools за Excel : с повече от 300 удобни добавки за Excel, безплатни за изпробване без ограничение за 30 дни

След инсталиране Kutools за Excel, моля, направете следните стъпки:

1. Щракнете Kutools > Обхват > Транспониране на размерите на таблицата, вижте екранна снимка:

2. В Транспониране на размерите на таблицата диалогов прозорец:

(1.) Изберете Кръстосана таблица за списък опция под Тип транспониране.

(2.) И след това щракнете doc конвертиране на матрица в списък 5 бутон под Обхват на източника за да изберете диапазона от данни, който искате да конвертирате.

(3.) След това щракнете doc конвертиране на матрица в списък 5 бутон под Диапазон на резултатите за да изберете клетка, в която искате да поставите резултата.

doc конвертиране на матрица в списък 15

3, И после щракнете върху OK и ще получите следния резултат, който включва оригиналното форматиране на клетка:

doc конвертиране на матрица в списък 16

С тази помощна програма вие също преобразувайте таблицата с плоски списъци в двуизмерна кръстосана таблица.

За да научите повече за тази функция за размери на транспонирана таблица.

Изтеглете и изпробвайте безплатно Kutools за Excel сега!


Kutools за Excel: с повече от 300 удобни добавки за Excel, безплатни за изпробване без ограничение за 30 дни. Изтеглете и изпробвайте безплатно сега!

Най-добрите инструменти за продуктивност в офиса

🤖 Kutools AI помощник: Революционизирайте анализа на данни въз основа на: Интелигентно изпълнение   |  Генериране на код  |  Създаване на персонализирани формули  |  Анализирайте данни и генерирайте диаграми  |  Извикване на функциите на Kutools...
Популярни функции: Намерете, маркирайте или идентифицирайте дубликати   |  Изтриване на празни редове   |  Комбинирайте колони или клетки без загуба на данни   |   Кръг без формула ...
Супер търсене: VLookup с множество критерии    VLookup с множество стойности  |   VLookup в няколко листа   |   Размито търсене ....
Разширен падащ списък: Бързо създаване на падащ списък   |  Зависим падащ списък   |  Падащ списък с множество избори ....
Мениджър на колони: Добавете конкретен брой колони  |  Преместване на колони  |  Превключване на състоянието на видимост на скритите колони  |  Сравнете диапазони и колони ...
Препоръчани функции: Мрежов фокус   |  Изглед на дизайна   |   Голям формула бар    Мениджър на работни книги и листове   |  Библиотека с ресурси (Автоматичен текст)   |  Избор на дата   |  Комбинирайте работни листове   |  Шифроване/декриптиране на клетки    Изпращайте имейли по списък   |  Супер филтър   |   Специален филтър (филтър получер/курсив/зачертано...) ...
Топ 15 комплекта инструменти12 Текст Инструменти (добавяне на текст, Премахване на символи, ...)   |   50 + Графика Видове (диаграма на Гант, ...)   |   40+ Практичен формули (Изчислете възрастта въз основа на рождения ден, ...)   |   19 вмъкване Инструменти (Въведете QR код, Вмъкване на картина от пътя, ...)   |   12 Конверсия Инструменти (Числа към думи, Валутен обмен, ...)   |   7 Обединяване и разделяне Инструменти (Разширено комбиниране на редове, Разделени клетки, ...)   |   ... и още

Усъвършенствайте уменията си за Excel с Kutools за Excel и изпитайте ефективност, както никога досега. Kutools за Excel предлага над 300 разширени функции за повишаване на производителността и спестяване на време.  Щракнете тук, за да получите функцията, от която се нуждаете най-много...

Описание


Раздел Office Внася интерфейс с раздели в Office и прави работата ви много по-лесна

  • Разрешете редактиране и четене с раздели в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
  • Отваряйте и създавайте множество документи в нови раздели на един и същ прозорец, а не в нови прозорци.
  • Увеличава вашата производителност с 50% и намалява стотици кликвания на мишката за вас всеки ден!
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