Перейти к основному содержанию

Как преобразовать таблицу стилей матрицы в три столбца в Excel?

Автор: Сяоян Последнее изменение: 2020 июля 05 г.

Предположим, у вас есть таблица в матричном стиле, которая содержит заголовки столбцов и заголовки строк, и теперь вы хотите преобразовать эту таблицу стилей в таблицу с тремя столбцами, она также называется таблицей списков, как показано на следующем снимке экрана, есть ли у вас какие-либо хорошие способы решить эту проблему проблема в Excel?

Преобразование таблицы стилей матрицы в список с помощью сводной таблицы

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

Преобразование таблицы стилей матрицы в список с помощью Kutools for Excel

doc преобразовать матрицу в список 1


В Excel нет прямой возможности преобразовать таблицу стилей матрицы в таблицу с тремя столбцами, но, если вы знакомы со сводной таблицей, она может оказать вам услугу. Пожалуйста, выполните следующие действия:

1. Активируйте свой рабочий лист, который вы хотите использовать, затем удерживая Alt + D, а затем нажмите P в клавиатуре, во всплывающем Мастер сводных таблиц и диаграмм диалоговое окно, выберите Несколько диапазонов консолидации под Где данные, которые вы хотите проанализировать раздел, а затем выберите PivotTable под Какой отчет вы хотите создать раздел, см. снимок экрана:

doc преобразовать матрицу в список 2

2. Затем нажмите Следующая кнопку в Шаг 2а из 3 мастера, выберите Я создам поля страницы вариант, см. снимок экрана:

doc преобразовать матрицу в список 3

3. Продолжайте нажимать Следующая кнопку в Шаг 2b из 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 for Excel, С его Перенести размеры таблицы функция, вы можете быстро преобразовать между матрицей ячеек и таблицей списка.

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

После установки Kutools for Excel, выполните следующие действия:

1. Нажмите Кутулс > Диапазон > Перенести размеры таблицы, см. снимок экрана:

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

(1.) Выберите Перекрестная таблица в список вариант под Тип транспонирования.

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

(3.) Затем щелкните doc преобразовать матрицу в список 5 под Диапазон результатов чтобы выбрать ячейку, в которую вы хотите поместить результат.

doc преобразовать матрицу в список 15

3, Затем нажмите OK кнопку, и вы получите следующий результат, включая исходное форматирование ячейки:

doc преобразовать матрицу в список 16

С помощью этой утилиты вы также преобразовать плоскую таблицу списка в двухмерную кросс-таблицу.

Чтобы узнать больше об этой функции транспонирования размеров таблицы.

Загрузите бесплатную пробную версию Kutools for Excel прямо сейчас!


Kutools for Excel: с более чем 300 удобными надстройками Excel, которые можно попробовать бесплатно без ограничений в течение 30 дней. Загрузите и бесплатную пробную версию прямо сейчас!

Лучшие инструменты для офисной работы

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

Улучшите свои навыки работы с Excel с помощью Kutools for Excel и почувствуйте эффективность, как никогда раньше. Kutools for Excel предлагает более 300 расширенных функций для повышения производительности и экономии времени.  Нажмите здесь, чтобы получить функцию, которая вам нужна больше всего...

Описание


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 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