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

Редизайнер таблиц

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

Рано или поздно пользователь такой таблицы приходит к мысли, что «пусть будет не так красиво, зато можно работать» и начинает упрощать дизайн своей таблицы, приводя его в соответствие с классическими рекомендациями:

  • простая однострочная шапка, где у каждого столбца будет свое уникальное название (имя поля)
  • одна строка — одна законченная операция (сделка, продажа, проводка, проект и т.д.)
  • без объединенных ячеек
  • без разрывов в виде пустых строк и столбцов

Но если сделать однострочную шапку из многоэтажной или разбить один столбец на несколько достаточно просто, то реконструирование таблицы может занять много времени (особенно при больших размерах ). Имеется ввиду следующая ситуация:

В терминах баз данных правую таблицу обычно называют плоской (flat) — именно по таким таблицам лучше всего строить отчеты сводных таблиц (pivot tables) и проводить аналитику.

Преобразовать двумерную таблицу в плоскую можно при помощи простого макроса. Откройте редактор Visual Basic через вкладку Разработчик — Visual Basic (Developer — Visual Basic Editor) или сочетанием клавиш Alt+F11. Вставьте новый модуль (Insert — Module) и скопируйте туда текст этого макроса:

Sub Redesigner()
    Dim i As Long
    Dim hc As Integer, hr As Integer
    Dim ns As Worksheet
    
    hr = InputBox("Сколько строк с подписями сверху?")
    hc = InputBox("Сколько столбцов с подписями слева?")
    
    Application.ScreenUpdating = False
    
    i = 1
    Set inpdata = Selection
    Set ns = Worksheets.Add
    
    For r = (hr + 1) To inpdata.Rows.Count
        For c = (hc + 1) To inpdata.Columns.Count
            For j = 1 To hc
                ns.Cells(i, j) = inpdata.Cells(r, j)
            Next j
            
            For k = 1 To hr
                ns.Cells(i, j + k - 1) = inpdata.Cells(k, c)
            Next k
            
            ns.Cells(i, j + k - 1) = inpdata.Cells(r, c)
            i = i + 1
        Next c
    Next r
End Sub

После этого можно закрыть редактор VBA и вернуться в Excel. Теперь можно выделить исходную таблицу (полностью, с шапкой и первым столбцом с месяцами) и запустить наш макрос через Разработчик — Макросы (Developer — Macros) или нажав сочетание Alt+F8.

Макрос вставит в книгу новый лист и создаст на нем новый, реконструированный вариант выделенной таблицы. С такой таблицей можно работать «по полной программе», применяя весь арсенал средств Excel для обработки и анализа больших списков.

Ссылки по теме

  • Что такое макросы, куда вставлять код макроса на VBA, как их использовать
  • Создание отчетов с помощью сводных таблиц
  • Инструмент для редизайна двумерных таблиц в плоские из надстройки PLEX

Содержание

      • 0.0.1 1. Создаем сводную таблицу
      • 0.0.2 2. Изменяем макет сводной таблицы на табличный
      • 0.0.3 3. Удаляем итоговые строки
      • 0.0.4 4. Заполняем пропущенные данные
    • 0.1 Ссылки по теме
  • 1 Добавить «Редизайн таблицы» в Excel 2016, 2013, 2010, 2007
  • 2 Как работать с надстройкой:

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

как сделать плоскую таблицу в excel

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

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

как сделать плоскую таблицу в excel

1. Создаем сводную таблицу

Подробно останавливаться на этом пункте не буду, так как у нас на сайте есть отличная статья на эту тему: «

Как создать сводную таблицу в Excel

«. Если Вы еще не знаете как это сделать, рекомендую прочитать, иначе двигаемся дальше.

как сделать плоскую таблицу в excel

2. Изменяем макет сводной таблицы на табличный

Для этого кликните на любую ячейку сводной таблицы, вверху справа должен появиться блок меню «

Работа со сводными таблицами «. В нем выберите меню «

Конструктор «, далее подменю «

Макет отчета » и там «

Показать в табличной форме «.

как сделать плоскую таблицу в excelкак сделать плоскую таблицу в excel

Выполнив эти действия, мы получаем сводную таблицу уже не в древовидном виде, а в форме таблицы. Однако для полноценной работы, нам мешают итоговые строки и отсутствие данных в части ячеек. Сейчас мы это исправим.

как сделать плоскую таблицу в excel

3. Удаляем итоговые строки

Для удаления итоговых строк кликните правой кнопкой мыши на любую итоговую ячейку, к примеру «Январь 2017 Итог». В появившемся

контекстном меню выберите «

Параметры поля » и там в блоке «

Итоги » выберите «

Нет «.

как сделать плоскую таблицу в excelкак сделать плоскую таблицу в excel

Итак, итоги удалены. Осталось добавить в пустые строки дублирующие данные и плоская сводная таблица будет готова!

4. Заполняем пропущенные данные

Если Вы обратите внимание на сводную таблицу в самом начале урока, то заметите что дата проставлена не во всех ячейках, сейчас мы это исправим. Для этого снова вызовите контекстное меню, нажав правой кнопкой мыши на любую из дат и снова выберите «Параметры поля…«, там перейдите в раздел «Разметка и печать» и установите галочку напротив пункта «Повторять подписи элементов«.

как сделать плоскую таблицу в excel

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

как сделать плоскую таблицу в excel

На этом текущий урок закончен, спасибо за внимание.

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

Рано или поздно пользователь такой таблицы приходит к мысли, что «пусть будет не так красиво, зато можно работать» и начинает упрощать дизайн своей таблицы, приводя его в соответствие с классическими рекомендациями:

  • простая однострочная шапка, где у каждого столбца будет свое уникальное название (имя поля)
  • одна строка — одна законченная операция (сделка, продажа, проводка, проект и т.д.)
  • без объединенных ячеек
  • без разрывов в виде пустых строк и столбцов

Но если сделать однострочную шапку из многоэтажной или разбить один столбец на несколько достаточно просто, то реконструирование таблицы может занять много времени (особенно при больших размерах ). Имеется ввиду следующая ситуация:

В терминах баз данных правую таблицу обычно называют плоской (flat) — именно по таким таблицам лучше всего строить отчеты сводных таблиц (pivot tables) и проводить аналитику.

Преобразовать двумерную таблицу в плоскую можно при помощи простого макроса. Откройте редактор Visual Basic — в Excel 2003 и старше это меню Сервис — Макрос — Редактор Visual Basic, а в новых версиях вкладка Разработчик — Редактор Visual Basic (Developer — Visual Basic Editor) или сочетание клавиш ALT+F11. Вставьте новый модуль (Insert — Module) и скопируйте туда текст этого макроса:

Sub Redesigner()      Dim i As Long      Dim hc As Integer, hr As Integer      Dim ns As Worksheet            hr = InputBox("Сколько строк с подписями сверху?")      hc = InputBox("Сколько столбцов с подписями слева?")            Application.ScreenUpdating = False            i = 1      Set inpdata = Selection      Set ns = Worksheets.Add            For r = (hr + 1) To inpdata.Rows.Count          For c = (hc + 1) To inpdata.Columns.Count              For j = 1 To hc                  ns.Cells(i, j) = inpdata.Cells(r, j)              Next j                            For k = 1 To hr                  ns.Cells(i, j + k - 1) = inpdata.Cells(k, c)              Next k                            ns.Cells(i, j + k - 1) = inpdata.Cells(r, c)              i = i + 1          Next c      Next r  End Sub  

После этого можно закрыть редактор VBA и вернуться в Excel. Теперь можно выделить исходную таблицу (полностью, с шапкой и первым столбцом с месяцами) и запустить наш макрос через меню Сервис — Макрос — Макросы (Tools — Macro — Macros) или нажав ALT+F8.

Макрос вставит в книгу новый лист и создаст на нем новый, реконструированный вариант выделенной таблицы. С такой таблицей можно работать «по полной программе», применяя весь арсенал средств Excel для обработки и анализа больших списков.

Ссылки по теме

  • Что такое макросы, куда вставлять код макроса на VBA, как их использовать
  • Создание отчетов с помощью сводных таблиц

    Таблицы в Excel представляют собой ряд строк и столбцов со связанными данными, которыми вы управляете независимо друг от друга.

    Работая в Excel с таблицами, вы сможете создавать отчеты, делать расчеты, строить графики и диаграммы, сортировать и фильтровать информацию.

    Если ваша работа связана с обработкой данных, то навыки работы с таблицами в Эксель помогут вам сильно сэкономить время и повысить эффективность.

    Как работать в Excel с таблицами. Пошаговая инструкция

    Прежде чем работать с таблицами в Эксель, последуйте рекомендациям по организации данных:

    • Данные должны быть организованы в строках и столбцах, причем каждая строка должна содержать информацию об одной записи, например о заказе;
    • Первая строка таблицы должна содержать короткие, уникальные заголовки;
    • Каждый столбец должен содержать один тип данных, таких как числа, валюта или текст;
    • Каждая строка должна содержать данные для одной записи, например, заказа. Если применимо, укажите уникальный идентификатор для каждой строки, например номер заказа;
    • В таблице не должно быть пустых строк и абсолютно пустых столбцов.

    1. Выделите область ячеек для создания таблицы

    как сделать плоскую таблицу в excel

    Выделите область ячеек, на месте которых вы хотите создать таблицу. Ячейки могут быть как пустыми, так и с информацией.

    2. Нажмите кнопку “Таблица” на панели быстрого доступа

    На вкладке “Вставка” нажмите кнопку “Таблица”.

    3. Выберите диапазон ячеек

    как сделать плоскую таблицу в excel

    В всплывающем вы можете скорректировать расположение данных, а также настроить отображение заголовков. Когда все готово, нажмите “ОК”.

    4. Таблица готова. Заполняйте данными!

    как сделать плоскую таблицу в excel

    Поздравляю, ваша таблица готова к заполнению! Об основных возможностях в работе с умными таблицами вы узнаете ниже.

    Форматирование таблицы в Excel

    Для настройки формата таблицы в Экселе доступны предварительно настроенные стили. Все они находятся на вкладке “Конструктор” в разделе “Стили таблиц”:

    Если 7-ми стилей вам мало для выбора, тогда, нажав на кнопку, в правом нижнем углу стилей таблиц, раскроются все доступные стили. В дополнении к предустановленным системой стилям, вы можете настроить свой формат.

    Помимо цветовой гаммы, в меню “Конструктора” таблиц можно настроить:

    • Отображение строки заголовков – включает и отключает заголовки в таблице;
    • Строку итогов – включает и отключает строку с суммой значений в колонках;
    • Чередующиеся строки – подсвечивает цветом чередующиеся строки;
    • Первый столбец – выделяет “жирным” текст в первом столбце с данными;
    • Последний столбец – выделяет “жирным” текст в последнем столбце;
    • Чередующиеся столбцы – подсвечивает цветом чередующиеся столбцы;
    • Кнопка фильтра – добавляет и убирает кнопки фильтра в заголовках столбцов.

    Как добавить строку или столбец в таблице Excel

    Даже внутри уже созданной таблицы вы можете добавлять строки или столбцы. Для этого кликните на любой ячейке правой клавишей мыши для вызова всплывающего окна:

    • Выберите пункт “Вставить” и кликните левой клавишей мыши по “Столбцы таблицы слева” если хотите добавить столбец, или “Строки таблицы выше”, если хотите вставить строку.

    как сделать плоскую таблицу в excel

    • Если вы хотите удалить строку или столбец в таблице, то спуститесь по списку в сплывающем окне до пункта “Удалить” и выберите “Столбцы таблицы”, если хотите удалить столбец или “Строки таблицы”, если хотите удалить строку.

    как сделать плоскую таблицу в excel

    Как отсортировать таблицу в Excel

    Для сортировки информации при работе с таблицей, нажмите справа от заголовка колонки “стрелочку”, после чего появится всплывающее окно:

    как сделать плоскую таблицу в excel

    В окне выберите по какому принципу отсортировать данные: “по возрастанию”, “по убыванию”, “по цвету”, “числовым фильтрам”.

    Как отфильтровать данные в таблице Excel

    Для фильтрации информации в таблице нажмите справа от заголовка колонки “стрелочку”, после чего появится всплывающее окно:

    • “Текстовый фильтр” отображается когда среди данных колонки есть текстовые значения;
    • “Фильтр по цвету” также как и текстовый, доступен когда в таблице есть ячейки, окрашенные в отличающийся от стандартного оформления цвета;
    • “Числовой фильтр” позволяет отобрать данные по параметрам: “Равно…”, “Не равно…”, “Больше…”, “Больше или равно…”, “Меньше…”, “Меньше или равно…”, “Между…”, “Первые 10…”, “Выше среднего”, “Ниже среднего”, а также настроить собственный фильтр.
    • В всплывающем окне, под “Поиском” отображаются все данные, по которым можно произвести фильтрацию, а также одним нажатием выделить все значения или выбрать только пустые ячейки.

    Если вы хотите отменить все созданные настройки фильтрации, снова откройте всплывающее окно над нужной колонкой и нажмите “Удалить фильтр из столбца”. После этого таблица вернется в исходный вид.

    Как посчитать сумму в таблице Excel

    Для того чтобы посчитать сумму колонки в конце таблицы, нажмите правой клавишей мыши на любой ячейке и вызовите всплывающее окно:

    В списке окна выберите пункт “Таблица” => “Строка итогов”:

    Внизу таблица появится промежуточный итог. Нажмите левой клавишей мыши на ячейке с суммой.

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

    Как в Excel закрепить шапку таблицы

    Таблицы, с которыми приходится работать, зачастую крупные и содержат в себе десятки строк. Прокручивая таблицу “вниз” сложно ориентироваться в данных, если не видно заголовков столбцов. В Эксель есть возможность закрепить шапку в таблице таким образом, что при прокрутке данных вам будут видны заголовки колонок.

    Для того чтобы закрепить заголовки сделайте следующее:

    • Перейдите на вкладку “Вид” в панели инструментов и выберите пункт “Закрепить области”:
    • Выберите пункт “Закрепить верхнюю строку”:
    • Теперь, прокручивая таблицу, вы не потеряете заголовки и сможете легко сориентироваться где какие данные находятся:

    Как перевернуть таблицу в Excel

    Представим, что у нас есть готовая таблица с данными продаж по менеджерам:

    На таблице сверху в строках указаны фамилии продавцов, в колонках месяцы. Для того чтобы перевернуть таблицу и разместить месяцы в строках, а фамилии продавцов нужно:

    • Выделить таблицу целиком (зажав левую клавишу мыши выделить все ячейки таблицы) и скопировать данные (CTRL+C):
    • Переместить курсор мыши на свободную ячейку и нажать правую клавишу мыши. В открывшемся меню выбрать “Специальная вставка” и нажать на этом пункте левой клавишей мыши:
    • В открывшемся окне в разделе “Вставить” выбрать “значения” и поставить галочку в пункте “транспонировать”:
    • Готово! Месяцы теперь размещены по строкам, а фамилии продавцов по колонкам. Все что остается сделать – это преобразовать полученные данные в таблицу.

    В этой статье вы ознакомились с принципами работы в Excel с таблицами, а также основными подходами в их создании. Пишите свои вопросы в комментарии!

    Сводные таблицы также называют двумерными (2D) таблицами или таблицами в «пользовательском» представлении. Они преподносят информацию в сжатой и наглядной матрице с заголовками столбцов и строк. Но такое представление данных не подходят для построения сводных таблиц PivotTable, графиков, фильтрации, экспорта данных в сторонние системы, т.д. Поэтому перед анализом данных так важно аккуратно преобразовать сводные таблицы в «плоский» список.

    Надстройка «Редизайн таблицы» точно преобразует сводные таблицы в плоский список без написания макросов:

    • Редизайн сводной таблицы в список в секунды
    • Преобразование сложных таблиц с многоуровневыми заголовками
    • Корректный редизайн таблиц с объединёнными или пустыми ячейками
    • Сохранение заголовков столбцов
    • Сохранение форматирования ячеек

    Язык видео: английский. Субтитры: русский, английский. (Внимание: видео может не отражать последние обновления. Используйте инструкцию ниже.)

    Добавить «Редизайн таблицы» в Excel 2016, 2013, 2010, 2007

    Подходит для: Microsoft Excel 2016 – 2007, desktop Office 365 (32-бит и 64-бит).

    Скачать надстройку XLTools

    Как работать с надстройкой:

    • Как преобразовать сводную таблицу Excel в плоский список
    • Как преобразовать сложную сводную таблицу с многоуровневыми заголовками
    • Как выполнить редизайн таблицы с пустыми ячейками
    • Как выполнить редизайн таблицы с объединёнными ячейками
    • Как выполнить редизайн таблицы с сохранением заголовков
    • Как выполнить редизайн таблицы с сохранением формата ячеек
    • Какие таблицы обрабатывает надстройка «Редизайн таблицы»

    Как преобразовать сводную таблицу Excel в плоский список

    1. Нажмите кнопку «Редизайн таблицы» на вкладке XLTools > Откроется диалоговое окно.
    2. Выделите сводную таблицу, включая заголовки.
      Совет: нажмите на любую ячейку таблицы, и вся таблица будет выделена автоматически.
    3. Укажите размер заголовков:
      В простой таблице: Заглавных строк = 1, Заглавных столбцов = 1
    4. Укажите, следует ли поместить результат на новый или на существующий лист.
      Чтобы вставить плоский список на существующий лист, укажите начальную ячейку (верхняя левая).
    5. Нажмите ОК > Готово. Надстройка автоматически подберёт ширину столбцов для плоского списка.

    Некоторые сводные таблицы могут иметь сложную структуру и многоуровневые заголовки. Их также можно сделать плоскими с помощью XLTools:

    1. Нажмите кнопку «Редизайн таблицы» на вкладке XLTools > Откроется диалоговое окно.
    2. Выделите сводную таблицу, включая заголовки.
      Совет: нажмите на любую ячейку таблицы, и вся таблица будет выделена автоматически.
    3. Укажите размер заголовков:
      • Заглавных строк: число строк, которые составляют заголовок таблицы сверху.
      • Заглавных столбцов: число столбцов, которые составляют заголовок таблицы слева.
    4. Укажите, следует ли поместить результат на новый или на существующий лист.
    5. Нажмите ОК > Готово. Надстройка автоматически подберёт ширину столбцов для плоского списка.

    Как выполнить редизайн таблицы с пустыми ячейками

    Если в вашей сводной таблице имеются пустые ячейки, то и в соотвествующие ячейки плоского списка также будут пустыми. При этом пустые значения в плоском списке не несут значимой информации для анализа. Поэтому мы рекомендуем следующее:

    • Если пустые ячейки находятся в заголовке: перед редизайном заполните ячейки заголовков.
    • Если пустые ячейки находятся в теле таблицы: вы можете пропустить соответствующие строки в плоском списке:
    1. Нажмите кнопку «Редизайн таблицы» на вкладке XLTools.
    2. Выделите сводную таблицу, включая заголовки.
    3. Укажите размер заголовков.
    4. Отметьте флажком «Пропустить пустые значения».
    5. Укажите, куда поместить результат.
    6. Нажмите ОК > Готово.

    Как выполнить редизайн таблицы с объединёнными ячейками

    1. Нажмите кнопку «Редизайн таблицы» на вкладке XLTools.
    2. Выделите сводную таблицу, включая заголовки.
    3. Укажите размер заголовков.
    4. Отметьте флажком «Дублировать значение в объединённых ячейках»:
      • Если объединённые ячейки находятся в заголовке: содержимое объединённых ячеек заголовка будет продублировано в каждой соответствующей строке плоского списка.
      • Если в объединённые ячейки находятся в теле таблицы: значения в объединённых ячейках будут продублированы в каждой соответсвующей ячейке плоского списка.
    5. Укажите, куда поместить результат.
    6. Нажмите ОК > Готово.
    1. Нажмите кнопку «Редизайн таблицы» на вкладке XLTools.
    2. Выделите сводную таблицу, включая заголовки.
    3. Укажите размер заголовков.
    4. Отметьте флажком «Сохранить заголовки»:
      • Где это возможно, надстройка продублирует заголовки из сводной таблицы.
      • Категориям таблицы будет автоматически присвоен заголовок «Категория».
      • Переменным значениям таблицы будет автоматически присвоен заголовок «Значение».
    5. Укажите, куда поместить результат.
    6. Нажмите ОК > Готово.

    Как выполнить редизайн таблицы с сохранением формата ячеек

    1. Нажмите кнопку «Редизайн таблицы» на вкладке XLTools.
    2. Выделите сводную таблицу, включая заголовки.
    3. Укажите размер заголовков.
    4. Отметьте флажком «Сохранить формат ячеек»:
      Каждая ячейка сохранит своё форматирование в результирующем плоском списке, в т.ч. цвет заливки, границы, цвет шрифта, цвета условного форматирования, дата/общий/числовой/денежный/ формат, т.д.
    5. Укажите, куда поместить результат.
    6. Нажмите ОК > Готово.

    Внимание: обработка больших таблиц с множеством форматов займёт больше времени.

    Какие таблицы обрабатывает надстройка «Редизайн таблицы»

    Редизайн таблицы по сути означает, что данные исходной таблицы копируются и преобразуются так, чтобы сформировать плоский список. Ваши исходные таблицы не изменяются. Чтобы избежать искажения данных, вместо ссылок на ячейки, функций или формул в исходной таблице, в результирующий плоский список надстройка XLTools вставляет их значения.

    Термином «Таблица» в Excel часто обозначают разные понятия:

    • «Настоящая» таблица — именованный диапазон с применением стиля таблицы (операция «Форматировать как таблицу»). Может быть преобразована в простой диапазон.
    • Диапазон — простой диапазон внешне похожий на таблицу, с применением (или без) форматирования цвета фона, границ, т.д. Может быть преобразован в «настоящую» таблицу.
    • Сводная таблица (PivotTable) — динамическая таблица, сгенерированная с помощью операции Excel «Сводная таблица» (PivotTable). Ячейки не могут быть отредактированы.

    Надстройка XLTools «Редизайн таблицы» позволяет преобразовать в плоский список «настоящие» таблицы и диапазоны. Чтобы произвести редизайн PivotTable, сначала скопируйте диапазон такой таблицы и вставьте значения — это создаст простой диапазон, который далее можно преобразовать.

    Появились вопросы или предложения? Оставьте комментарий ниже.

    Источником данных для сводной таблицы служит список данных, где, как правило, каждый столбец выступает в роли поля сводной таблицы. Но что если к вам пришла, только с виду похожая на сводную, таблица (она отформатирована и внешне напоминает ее, но использовать инструменты работы со сводными таблицами невозможно). И вам необходимо превратить ее в список данных, т.е. выполнить обратную операцию. В этом посте вы узнаете, как преобразовать сводную таблицу с двумя переменными в список данных.

    На рисунке показан принцип, который я описал. Т.е. в диапазоне A2:E5 находится исходная сводная таблица, которая преобразуется в список данных (диапазон H2:J14). Вторая таблица представляет тот же набор данных, только в другом ракурсе. Каждое значение исходной сводной таблицы выглядит в виде строки, состоящее из пункта поля строки, поля столбца и соответствующего им значения. Такое отображение данных бывает полезно, когда необходимо отсортировать и манипулировать данными другими способами.

    Для того чтобы реализовать возможность создания такого списка, мы воспользуемся инструментами сводной таблицы. Добавим кнопку Мастер сводных таблиц в панель быстрого доступа, которая недоступна нам на ленте, но осталась как рудимент от более ранних версий Excel.

    Перейдите по вкладке Файл -> Параметры. В появившемся диалоговом окне Параметры Excel, во вкладке Панель быстрого доступа в левом поле найдите пункт Мастер сводных таблиц и диаграмм и добавьте его в правый. Нажмите ОК.

    Теперь на панели быстрого доступа у вас появился новый значок.

    Щелкните по этой вкладке, чтобы запустить Мастер сводных таблиц.

    На первом шаге мастера необходимо выбрать тип источника данных сводной таблицы. Устанавливаем переключатель В нескольких диапазонах консолидации и жмем Далее.

    На шаге 2а укажите, как следует создавать поля страницы. Поместите переключатель Создать поля страницы -> Далее.

    На шаге 2б, в поле Диапазон выберите диапазон, содержащий данные, и щелкните Добавить. В нашем случае это будет местоположение исходной сводной таблицы A1:E4.

    На третьем шаге необходимо определиться, куда необходимо поместить сводную таблицу, и нажмите кнопку Готово.

    Excel создаст сводную таблицу с данными. В левой части экрана вы увидите область Список полей сводной таблицы. Уберите все пункты с полей строк и столбцов. Более подробно о редактировании полей строк и столбцов в сводной таблице я писал в предыдущей статье.

    У вас получится небольшая сводная таблица, состоящая из одной ячейки, которая содержит сумму всех значений исходной таблицы.

    Дважды щелкните по этой ячейке. Excel создаст новый лист, который будет содержать таблицу со списком значений.

    Заголовки этой таблицы представляют общую информацию, вероятно, вы захотите сделать их более информативными.

    Редизайнер таблиц (преобразование в плоскую таблицу)

    DJ_Marker_MC

    Дата: Среда, 04.02.2015, 10:40 |
    Сообщение № 1

    Группа: Друзья

    Ранг: Ветеран

    Сообщений: 991


    Репутация:

    213

    ±

    Замечаний:
    0% ±


    Excel 2019

    ОБНОВЛЕНО 19.04.15 до Версии 2 (макрос не изменился но был добавлен видеобзор на данную примочку)

    Добрый день, друзья и гости.
    Оформить данное решение навеяла очередная тема на нашем форуме о том «как преобразовать таблицу разбитую по столбцам в плоскую?».

    — Данное решение построено на массивах, авторство принадлежит МСН.
    — Внес небольшую коррективу, а именно запрос на выделение диапазона — Максим Зеленский, с дружеского форума.
    — Дополнительные улучшения и полезности — SLAVICK .
    — Небольшие дополнения и коррективы — DJ Marker MC

    В итоге получился вот такой вот макрос:

    Итак по шагам.

    1. К примеру имеем таблицу такого вида:

    После запуска Редизайнера видим диалоговое окно в котором Вам предложено указать диапазон таблицы которую необходимо преобразовать.

    2. Указываем диапазон таблицы: (если таблица была выделена до запуска макроса, то выделенный диапазон будет подхвачен автоматически)

    3. Третий шаг, в диалоговом окне необходимо указать сколько строк находится в шапке таблицы. В нашем примере — три строки.

    4. Следующим шагом указываем количество столбцов с данными в левой части таблицы. В нашем примере их пять — Код, Цена, Направление, Страна, Мин.уп!

    5. Если мы ходим получить ПЛОСКУЮ ТАБЛИЦУ, то оставляем тут значение по умолчанию 1, если Вам будет необходимо чтоб вправо таблица была разбита помесячно, а года были разбиты вниз то поставьте 12 (вообще на этом шаге поэкспериментируйте и сами поймете как это работает.
    Я же оставлю тут 1, так как желаю получить плоскую таблицу

    6. Последний шаг — вопрос: Хотите Вы уменьшить шапку таблицы или нет? Данный вопрос задается только в том случае, если в предыдущем шаге Вы указали — 1 или же если в шапку таблицы попадает всего одна строка (тоже попробуйте как это работает в двух вариантах методом «ТЫКА»)

    После того как мы нажмем «ОК», наша таблица уходящая вправо, превратится в плоскую, такого вида как на картинке ниже в левой части. Как Вы можете заметить все столбцы уже подписаны кроме первых трех (это была наша шапка), поскольку программе нету откуда взять название этих столбцов, мы подписываем их вручную. Подписываем наши столбцы и получаем готовую плоскую таблицу как в правой части картинки.

    Попробовать как это работает можно с помощью приложенного файла.
    В целом все очень быстро и красиво!
    Всем приятного пользования!

     

    Ответить

    SLAVICK

    Дата: Среда, 04.02.2015, 20:46 |
    Сообщение № 2

    Группа: Модераторы

    Ранг: Старожил

    Сообщений: 2290


    Репутация:

    766

    ±

    Замечаний:
    0% ±


    2019

    Хороший код — мой в разы больше :D
    Рискну дать несколько предложений по улучшению:

    Во все Iputboxы проставить умолчания:
    [vba]

    Код

       Set inpdata = Application.InputBox(«Выберите обрабатываемый диапазон:», «Выбор диапазона», Selection.Address, Type:=8)
              hr = InputBox(«Сколько строк с подписями данных сверху», , 1)
              hc = InputBox(«Сколько столбцов с подписями данных слева?», , 1)

    [/vba]

    Добавить возможность за раз брать не один столбец а с выбором -например мне часто нужно брать по 12(Янв-Дек), иногда по два(шт, $)

    Добавить в код проверку типа значений:
    У меня были проблемы с упаковками в формате «1/10» — они при выгрузке на лист преобразовывались в дату и с кодами типа «0006» = «6» . Для таких данных я сцеплял с «‘» & hcArr(i, c)

    Прошу камнями не забрасывать. Мне такие мелочи существенно ускорили работу, может еще кому будет полезно. ^_^


    Иногда все проще чем кажется с первого взгляда.

    Сообщение отредактировал SLAVICKСреда, 04.02.2015, 20:51

     

    Ответить

    DJ_Marker_MC

    Дата: Среда, 04.02.2015, 22:02 |
    Сообщение № 3

    Группа: Друзья

    Ранг: Ветеран

    Сообщений: 991


    Репутация:

    213

    ±

    Замечаний:
    0% ±


    Excel 2019

    Во все Iputboxы проставить умолчания:

    С этим понятно — исправлю.

    Добавить возможность за раз брать не один столбец а с выбором -например мне часто нужно брать по 12(Янв-Дек), иногда по два(шт, $)

    Про это не понял, что хотели сказать?

    Добавить в код проверку типа значений

    Тут абсолютно согласен, но сам не смогу реализовать это(((

     

    Ответить

    SLAVICK

    Дата: Четверг, 05.02.2015, 11:12 |
    Сообщение № 4

    Группа: Модераторы

    Ранг: Старожил

    Сообщений: 2290


    Репутация:

    766

    ±

    Замечаний:
    0% ±


    2019

    Добавил лист с тем как иногда мне нужно получать данные — так удобней работать в сводной.Это моё субъективное мнение — может я в этом не одинок :)

    Вложил простенькую функцию проверки данных — сам ею пользуюсь.
    Ее можно применить для справочника(т.е. для диапазона который нужно повторять), для данных наверное нет смысла… поскольку там как правило цифры.

    Надеюсь мои маленькие «улучшалки» пригодятся :p

    К сообщению приложен файл:

    0546452.xlsm
    (48.8 Kb)


    Иногда все проще чем кажется с первого взгляда.

     

    Ответить

    SLAVICK

    Дата: Четверг, 05.02.2015, 18:53 |
    Сообщение № 5

    Группа: Модераторы

    Ранг: Старожил

    Сообщений: 2290


    Репутация:

    766

    ±

    Замечаний:
    0% ±


    2019

    Решил у себя заменить свой громоздкий код на этот. Он в три раза меньше. Спасибо Вам и МСН. hands

    Внес в него свои же предложения и еще несколько «украшательств».
    Может еще кому сгодится :D
    Код запускается по нижней кнопке. <_<


    Иногда все проще чем кажется с первого взгляда.

    Сообщение отредактировал SLAVICKПятница, 06.02.2015, 01:27

     

    Ответить

    DJ_Marker_MC

    Дата: Пятница, 06.02.2015, 13:28 |
    Сообщение № 6

    Группа: Друзья

    Ранг: Ветеран

    Сообщений: 991


    Репутация:

    213

    ±

    Замечаний:
    0% ±


    Excel 2019

    SLAVICK, очень крутая штука вышла, но мне кажется подписывать шапку не совсем правильно когда в последнем inputbox указываем «1» и соответственно количество строк сверху тоже не должно быть 3, достаточно одной строки.
    Предлагаю подправить немного Ваши вкусняшки и чуток допилить проверкой:
    [vba]

    Код

        If nSt = 1 Then
              r = 2
              ns.Cells(r, 1).Resize(UBound(out), UBound(out, 2)) = out ‘    Выгрузка данных
              ns.Cells(1, 1).Resize(1, UBound(out, 2)).Interior.ColorIndex = 44 ‘    Закрашивание шапки
              ns.Cells(1, r + c — 1).Select: ActiveWindow.FreezePanes = True ‘    Закрепление шапки
          Else
              ns.Cells(1, r + c — 1).Resize(UBound(hrArr), nSt) = hrArr ‘    Выгрузка шапки
              ns.Cells(r, 1).Resize(UBound(out), UBound(out, 2)) = out ‘    Выгрузка данных
          ‘Удобности:
              ns.Cells(1, 1).Resize(UBound(hrArr), UBound(out, 2)).Interior.ColorIndex = 44 ‘    Закрашивание шапки
              ns.Cells(r, r + c — 1).Select: ActiveWindow.FreezePanes = True ‘    Закрепление шапки
          End If
          ns.Range(Cells(r — 1, 1), Cells(UBound(out), UBound(out, 2))).AutoFilter ‘    Установка Автофильтра

    [/vba]
    надеюсь Вы не против, что я немного изменил цвет шапки? я лично или таким или желтым как правило шапку делаю)))

    Также предлагаю изменить вопрос в последнем inputbox, поскольку я не сразу понял о чем речь, как насчет такого?
    [vba]

    Код

    nSt = InputBox(«Сколько столбцов с данными будет в правой части таблицы? (например: если Ваша таблица уходит вправо на 24 месяца то указав тут 12 — месяцы разобьются по столбцам, а год перенесется по строкам», , 1)

    [/vba]

    И уже если допиливать внешний вид, то предлагаю в конец еще вставить такой кусочек:
    [vba]

    Код

    ‘ Установка границ
          With ns.Range(Cells(1, 1), Cells(Cells.Find(What:=»*», SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row, UBound(out, 2)))
              .Borders.LineStyle = xlContinuous
              .Borders.Weight = xlThin
              .Borders(xlEdgeLeft).Weight = xlThin
              .Borders(xlEdgeTop).Weight = xlThin
              .Borders(xlEdgeBottom).Weight = xlThin
              .Borders(xlEdgeRight).Weight = xlThin
          End With

    [/vba]

    Таким образом получаем красивое универсальное решение.

    Что скажете?

    К сообщению приложен файл:

    0711946.xlsm
    (27.4 Kb)

     

    Ответить

    SLAVICK

    Дата: Пятница, 06.02.2015, 14:10 |
    Сообщение № 7

    Группа: Модераторы

    Ранг: Старожил

    Сообщений: 2290


    Репутация:

    766

    ±

    Замечаний:
    0% ±


    2019

    На счет не подписывать шапку:
    Возможно и так. но тогда:
    [vba]

    Код

    вместо
                ns.Cells(1, r + c — 1).Select: ActiveWindow.FreezePanes = True ‘    Закрепление шапки
    Нужно
                ns.Cells(2, r + c — 1).Select: ActiveWindow.FreezePanes = True ‘    Закрепление шапки

    [/vba] :D
    А то шапка не закрепляется.
    Лично я против этого решения, но как говорится на вкус и цвет… :). Я наоборот, еще добавил шапку над «Справочником» с родными названиями, потому что приходится потом еще и «Обзывать» все столбцы справочника заново(особенно когда их больше 10 %) ) .

    Также предлагаю изменить вопрос в последнем inputbox

    Только за… просто поленился столько букв писать :D

    И уже если допиливать внешний вид, то предлагаю в конец еще вставить такой кусочек:

    Только за, но можно немного упростить код:
    [vba]

    Код

    ‘ Установка границ
            With ns.Range(Cells(1, 1), Cells(Cells.Find(What:=»*», SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row, UBound(out, 2))).Borders
                .LineStyle = xlContinuous
                .Weight = xlThin
            End With

    [/vba]
    Добавил шапку и поменял местами справочник с подписями по столбцам. Мне кажется так гораздо удобнее<_<

    К сообщению приложен файл:

    8047436.xlsm
    (32.9 Kb)


    Иногда все проще чем кажется с первого взгляда.

    Сообщение отредактировал SLAVICKПятница, 06.02.2015, 14:34

     

    Ответить

    DJ_Marker_MC

    Дата: Пятница, 06.02.2015, 14:39 |
    Сообщение № 8

    Группа: Друзья

    Ранг: Ветеран

    Сообщений: 991


    Репутация:

    213

    ±

    Замечаний:
    0% ±


    Excel 2019

    Лично я против этого решения

    Я правильно понял что вы против того чтоб не подписывать шапку?
    Объясню почему считаю правильно не подписывать шапку:
    1. Если мы делаем редизайн вправо на 12 месяцев с нашей таблицы-пример, то получаем такой результат (с учетом того что редизайн делаем ТОЛЬКО продажи):

    Все что тут выделено красным, при подобной ситуации является ненужным и скорее всего будет удалено (ИМХО я б удалил).
    Но в тоже время подпись помесячной разбивки — сохранилось, а вот первые два столбца подписать в ручном режиме — думаю труда не составит.

    2. Если делам редизайн в плоскую таблицу, то получаем такой результат:


    Опять таки, если делать редизайн только данных по продажам 10-11, то столбец в котором повторяется слово ПРОДАЖИ в целом подлежит удалению. И в то же время остается для ЕКСЕЛЯ вопрос, как подписать 3 новых столбца? — ему ведь нет откуда понять что это за столбцы, соответственно их в любом случае придется подписывать руками.
    Другими словами, как вариант можно добавлять подпись лишь столбцам которые находятся в левой части, точнее то количество столбцов слева которое мы указываем во втором inputbox

     

    Ответить

    SLAVICK

    Дата: Пятница, 06.02.2015, 15:19 |
    Сообщение № 9

    Группа: Модераторы

    Ранг: Старожил

    Сообщений: 2290


    Репутация:

    766

    ±

    Замечаний:
    0% ±


    2019

    а вот первые два столбца подписать в ручном режиме — думаю труда не составит.

    А если их будет не 2 а больше 10? или хотя бы 9 как в моем примере с прошлого поста? %)

    Другими словами, как вариант можно добавлять подпись лишь столбцам которые находятся в левой части, точнее то количество столбцов слева которое мы указываем во втором inputbox

    Я же это и сделал в прошлом посте. Только оставил и подпись блока данных :D
    Вы же не знаете в какой именно строке у пользователя будет подписано разные данные которые нужно оставить. Это у меня в нижней строке, а может быть и по средине, и вверху ^_^
    Лично мне проще удалить лишние строки и столбцы, чем подписывать недостающие данные :D
    Предлагаю сделать контрольный вопрос, если выбрано для повтора 1 столбец.
    типа «Добавить шапку?» тогда вариант подойдет и моим и Вашим единомышленникам beer


    Иногда все проще чем кажется с первого взгляда.

    Сообщение отредактировал SLAVICKПятница, 06.02.2015, 15:20

     

    Ответить

    DJ_Marker_MC

    Дата: Пятница, 06.02.2015, 16:03 |
    Сообщение № 10

    Группа: Друзья

    Ранг: Ветеран

    Сообщений: 991


    Репутация:

    213

    ±

    Замечаний:
    0% ±


    Excel 2019

    SLAVICK, я не увидел Ваш предыдущий вариант просто, на самом деле он уже приближен к иделу. На мой взгляд все хорошо, только исправить одно НО все же стоит, наверное.
    Предлагаю все таки делать проверку nSt и если это значение равно 1, то выводить шапку из 1 строки, подписывать все как и подписываете, а столбец со значениями, просто подписать в принудительном порядке, например «ЗНАЧЕНИЯ»

    Признаю честно, у меня на такую правку много времени уйдет))) Если Вам такой вариант понравится, не подправите?

    К сообщению приложен файл:

    7690663.png
    (80.6 Kb)

     

    Ответить

    DJ_Marker_MC

    Дата: Пятница, 06.02.2015, 16:14 |
    Сообщение № 11

    Группа: Друзья

    Ранг: Ветеран

    Сообщений: 991


    Репутация:

    213

    ±

    Замечаний:
    0% ±


    Excel 2019

    Аааа… блин… понял о чем Вы… если в столбцах слева подпись будет не в 3 строке, а например во второй… ну да… тогда выходит предугадать это не выйдет. Тобеж шапку нужно оставлять так как у Вас… но все же блок с данными, при nst = 1, думаю подписывать автоматом не нужно.

    up:
    Другими словами вот так:
    [vba]

    Код

    If nSt <> 1 Then ns.Cells(1, r + c — 1).Resize(UBound(hrArr), nSt) = hrArr ‘    Выгрузка шапки столбцов

    [/vba]

    К сообщению приложен файл:

    0651298.xlsm
    (23.4 Kb)

     

    Ответить

    SLAVICK

    Дата: Пятница, 06.02.2015, 17:20 |
    Сообщение № 12

    Группа: Модераторы

    Ранг: Старожил

    Сообщений: 2290


    Репутация:

    766

    ±

    Замечаний:
    0% ±


    2019

    Ну еще немного усовершенствовал :D
    Добавил контрольный вопрос и перепроверку шапки(раньше если выбрано кол. строк и кол. повторяемого диап. вылетал в ошибку(Ubound(шапка))). %)

    блок с данными, при nst = 1

    Сделал = «Значение» B)

    Проверяйте вроде все ОК :)
    ЗЫ А макрос тем временем рос и рос :D


    Иногда все проще чем кажется с первого взгляда.

    Сообщение отредактировал SLAVICKПятница, 06.02.2015, 18:14

     

    Ответить

    DJ_Marker_MC

    Дата: Пятница, 06.02.2015, 18:31 |
    Сообщение № 13

    Группа: Друзья

    Ранг: Ветеран

    Сообщений: 991


    Репутация:

    213

    ±

    Замечаний:
    0% ±


    Excel 2019

    SLAVICK, Лично мне нравится))) очень круто Вышло)))

     

    Ответить

    SLAVICK

    Дата: Суббота, 07.02.2015, 10:49 |
    Сообщение № 14

    Группа: Модераторы

    Ранг: Старожил

    Сообщений: 2290


    Репутация:

    766

    ±

    Замечаний:
    0% ±


    2019

    Ну тогда, наверное, нужно дополнить презентацию возможностей доступным для пользователей языком .
    У Вас это красиво и наглядно получается specool
    Лично я забираю код себе в копилку. Мне тоже нравится, что получилось. :) beer


    Иногда все проще чем кажется с первого взгляда.

    Сообщение отредактировал SLAVICKСуббота, 07.02.2015, 10:55

     

    Ответить

    SLAVICK

    Дата: Суббота, 07.02.2015, 10:50 |
    Сообщение № 15

    Группа: Модераторы

    Ранг: Старожил

    Сообщений: 2290


    Репутация:

    766

    ±

    Замечаний:
    0% ±


    2019

    Какой то глюк произошел. Сообщение почему-то задвоилось :(
    Ну тогда еще раз beer


    Иногда все проще чем кажется с первого взгляда.

    Сообщение отредактировал SLAVICKСуббота, 07.02.2015, 10:54

     

    Ответить

    DJ_Marker_MC

    Дата: Суббота, 07.02.2015, 11:49 |
    Сообщение № 16

    Группа: Друзья

    Ранг: Ветеран

    Сообщений: 991


    Репутация:

    213

    ±

    Замечаний:
    0% ±


    Excel 2019

    SLAVICK, Тоже уже забрал в копилку.
    Сегодня обновлю стартовое сообщение)))
    Спасибо за внесенные отличные улучшалки! hands beer

     

    Ответить

    DJ_Marker_MC

    Дата: Понедельник, 09.02.2015, 13:42 |
    Сообщение № 17

    Группа: Друзья

    Ранг: Ветеран

    Сообщений: 991


    Репутация:

    213

    ±

    Замечаний:
    0% ±


    Excel 2019

    Обновлено до версии 2. Внес все изменения в первый пост!

     

    Ответить

    SLAVICK

    Дата: Пятница, 12.08.2016, 14:59 |
    Сообщение № 18

    Группа: Модераторы

    Ранг: Старожил

    Сообщений: 2290


    Репутация:

    766

    ±

    Замечаний:
    0% ±


    2019

    В этой теме подняли вопрос по сохранению форматов и примечаний.
    Решил дополнить готовый редизайнер куском кода для выбора режима с сохранением форматов или нет.

    По умолчанию — активируется кнопка «Нет» — тогда запускается редизайнер в обычном режиме.
    Если нажать «Да» — то в режиме сохранения форматов и примечаний — в этом режиме работает на порядок дольше… но зато все в точности как в исходнике.
    В своей надстройке заменил на эту версию(мало ли может нужно будет форматы сохранить).
    В общем, встречайте 3-ю версию :D .


    Иногда все проще чем кажется с первого взгляда.

     

    Ответить

    Когда мы получаем данные из выгрузки или от коллег, часто возникает проблема со структурой таблицы. Встаёт вопрос: «Как привести данные к нужной структуре, чтоб построить удобный и простой отчёт?».

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

    • У каждого столбца должен быть заголовок.
    • В каждом столбце данные должны быть однородные, т.е. одного типа. Например, если столбец несет под собой значения даты, то в каждой строке в столбце «Дата» должен быть единый тип.

    Рассмотрим преобразования трёх самых популярных типов сводной таблицы.

    1. В заголовках имеем диапазон по дате или другим категориям


    Чтобы исправить такую таблицу необходимо:

    • через CTRL выделить все столбцы с диапазоном, в данном случае кварталы;
    • перейти во вкладку «Преобразование»;
    • найти кнопку «Отменить свертывания столбцов».

    Получаем таблицу, с которой можем дальше проводить анализ в Power BI:

    2. В одном столбце неоднородные данные

    Бывает, что столбец с названием показателя вынесен отдельно:


    Выделим нужный столбец и нажмем на кнопку «Столбец сведения», после чего откроется меню настройки.
    Во вкладке «Столбец значений» выбираем значения, которые попадут в новые столбцы. Во вкладке «Функция агрегированного значения» выбираем пункт «Не агрегировать».

    По окончании проделанных шагов получаем таблицу на рисунке ниже:


    3. Сложная комбинация пунктов 1 и 2.

    При комбинации случаев 1 и 2 первым делом необходимо избавиться от пустых значений null. Для этого выберем первый столбец и нажмем «Заполнить значения вниз».


    Пустые значения первого столбца пропали, а на их месте теперь название филиала, которое было выше.
    Далее перевернем таблицу, для этого нажмем на кнопку «Транспонировать», после выбираем «Заполнить значения вниз», как указано на рисунке ниже:
    Следующим шагом избавимся от нескольких заголовков. Для этого необходимо объединить столбцы и нажать на кнопку «Объединить столбцы»:
    Столбцы склеиваются в один:

    Транспонируем таблицу обратно и используем первую строку в качестве заголовка:


    Далее действуем как в предыдущих примерах. Выделяем нужный диапазон и нажимаем «Отменить свертывание столбцов»:
    Разделим ранее склеенный столбец, чтобы отделить год.
    Выделим столбец, где указаны кол-во и сумма, далее нажмем столбец сведения:
    В результате получим простую таблицу, с которой удобно работать и которую легко анализировать:
    Наши курсы по Power BI:
    Курс Аналитик BI
    Курс DAX Mastering
    Курс Финансовый анализ в Power BI

    Наши каналы:
    Facebook
    Instagram
    Telegram
    VK


    2022-03-31 14:12

    Полезные статьи

    Если вы умеете строить сводные таблицы в Excel или OpenOffice, то знаете, что сперва надо построить плоскую таблицу, а потом свернуть ее в сводную таблицу:

    Мастер сводных таблиц

    А что если необходимо выполнить обратную операцию — преобразовать сводную таблицу в плоскую:

    Программа LIST

    Такая встроенная функция практически отсутствует. А жаль, потому что в целом ряде случае она позволяет по сути агрегировать (или «сворачивать») данные самыми простыми, подручными средствами. Такой прием активно используется при построении витрин данных. Суть процесса «сворачивания» данных укладывается в следующую простую формулу:

    1) допустим, у вас есть некая плоская таблица (неважно как она получена — главное, что она есть)
    2) вы сворачиваете на ее основе сводную таблицу, где используется не все, а только часть атрибутов плоской таблицы (таким образом, вы не отражаете в сводной таблице избыточную для вас информацию)
    3) сводную таблицу вы превращаете в плоскую таблицу с помощью программы LIST:

    Программа LIST на панели инструментов 1C_ANALYTICS

    При этом полученная плоская таблица будет иметь меньшее количество атрибутов, то есть столбцов, и что весьма вероятно — меньшую размерность, то есть меньшее количество записей, или строк)

    Естественно, что с новой плоской таблицей вы можете делать все прочие стандартные операции — обрабатывать ее, добавляя новые атрибуты, объединять с другими плоскими таблицами в один массив данных и т.д.

    Ниже приводится текст программы LIST на VBA:

    Sub LIST()

    Set w = ActiveWorkbook

    Set s1 = ActiveSheet
    If s1.PivotTables.Count = 1 Then

            Set p1 = s1.PivotTables(1)
        Set rng1 = p1.TableRange1
        Set rng2 = p1.TableRange2

            Sheets.Add
        Set s2 = ActiveSheet

                   p1.PivotCache.Refresh

            m = p1.VisibleFields.Count
        ReDim HDL(1 To m)
        HDL_Count = p1.VisibleFields.Count

            ‘ На Лист3 формируем шапку нового массива
        l = 0
        RW_Count = 0
        CL_count = 0
        For Each f In p1.VisibleFields
            l = l + 1
            HDL(l) = f.Name
            z1 = f.Orientation
            If z1 = 1 And Not HDL(l) = «Данные» Then RW_Count = RW_Count + 1
            If z1 = 2 Then CL_count = CL_count + 1
            s2.Cells(1, l).Value = HDL(l)
            s2.Cells(1, l).Interior.ColorIndex = 15
        Next

                y = 1
        For Each c In rng2
            k = c.Row
            l = c.Column
            z1 = c.Value
            ‘s1.Cells(k, l).Value = z1
            If Not z1 = Empty Then
                z2 = c.PivotCell.PivotCellType
                If z2 = 0 Then
                    z8 = c.PivotCell.RowItems.Count
                    z9 = c.PivotCell.ColumnItems.Count
                    If z8 = RW_Count And z9 = CL_count Then
                        y = y + 1
                        ReDim tml(1 To m)
                        z3 = c.PivotItem.Name
                        For j = 1 To m
                            If HDL(j) = «Данные» Then
                                tml(j) = z3
                                Exit For
                            End If
                        Next
                        ‘If z3 = 1 Then
                        For j = 1 To m
                            If HDL(j) = c.PivotItem.Name Then
                                tml(j) = z1
                                Exit For
                            End If
                        Next
                        ‘z5 = c.PivotItem.Name
                        ‘z4 = c.PivotCell.ColumnItems.Count
                        For Each cl In c.PivotCell.ColumnItems
                            If Not cl = Empty Then
                                z6 = cl.Parent.Name
                                For j = 1 To m
                                    If HDL(j) = z6 Then
                                        tml(j) = cl
                                    End If
                                Next
                            End If
                        Next
                        For Each rw In c.PivotCell.RowItems
                            If Not rw = Empty Then
                                z6 = rw.Parent.Name
                                For j = 1 To m
                                    If HDL(j) = z6 Then
                                        tml(j) = rw
                                    End If
                                Next
                            End If
                        Next
                        ‘End If
                        For Each pg In p1.VisibleFields
                            If pg.Orientation = 3 Then
                                z6 = pg.Name
                                z7 = pg.CurrentPage
                                For j = 1 To m
                                    If HDL(j) = z6 Then
                                        tml(j) = z7
                                    End If
                                Next
                            End If
                        Next
                        For i = 1 To m
                            If Not IsNumeric(tml(i)) Then
                                s2.Cells(y, i).NumberFormat = «@»
                            End If
                            s2.Cells(y, i).Value = tml(i)
                        Next
                    End If
                End If
            End If
        Next

        ElseIf s1.PivotTables.Count = 0 Then
        ‘ttl = «Инструменты аналитика.LIST»
        txt = «На текущей странице нет ни одной сводной таблицы! Реализовать функцию невозможно…»
        MsgBox txt, , ttl
        Exit Sub
    ElseIf s1.PivotTables.Count > 1 Then
        ttl = «Инструменты аналитика.LIST»
        txt = «На текущей странице должна быть только одна сводная таблица! А их сейчас » & s1.PivotTables.Count & _
        «. Реализовать функцию невозможно…»
        MsgBox txt, , ttl
        Exit Sub
    End If

    End Sub

    На чтение 3 мин. Просмотров 273 Опубликовано 24.05.2021

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

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

    Содержание

    1. Преобразование кросс-таблицы в список в Excel с помощью VBA
    2. Преобразование перекрестных таблиц в списки в Excel с помощью Kutools for Excel
    3. Относительные статьи:
    Потрясающе! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
    Сэкономьте 50% своего времени и сократите тысячи щелчков мышью каждый день!

    Предположим, у вас есть кросс-таблица и вам нужно преобразовать ее в список следующим образом.


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

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

    Шаг 1. Удерживая клавиши Alt + F11 в Excel, откроется Microsoft Visual Ba sic для окна приложений.

    Шаг 2: Щелкните Insert > Module и вставьте следующий макрос в окно модуля.

    VBA при переносе кросс-таблицы в список:

    Sub ConvertTableToList ()
    Const TEST_COLUMN As String = “A”
    Dim i As Long, j As Long
    Dim iLastRow As Long
    Dim iLastCol As Long
    Application.ScreenUpdating = False
    с ActiveSheet
    iLastRow = .Cells (.Rows.Count, TEST_COLUMN) .End (xlUp) .Row
    Для i = iLastRow To 2, шаг -1
    iLastCol = .Cells (i, .Columns.Count) .End (xlToLeft) .Column
    Для j = iLastCol To 3 Step -1
    .Rows (i + 1) .Insert
    .Cells (i + 1, 2) .Value = .Cells (i, j) .Value
    .Cells (i, j) .Value = “”
    Next j
    Next i
    .Rows (1). Удалить
    Заканчивается на
    Прил. ication.ScreenUpdating = True
    End Sub

    Шаг 3. Нажмите клавишу F5 для запуска этого макроса.

    Затем вы увидите преобразованный список, показанный как следующий снимок экрана:

    Примечание:

    1. Этот макрос VBA теряет некоторые данные исходной таблицы, такие как заголовки и т. д. . В этом случае заголовки (Имя, Оценка и Класс) теряются.

    2. Вы можете изменить As String = “A” в соответствии с вашими потребностями. Например, если крестик таблица указана в столбце E, вы должны вместо «E» вместо «A».

    3. И если на листе есть другие данные, иногда данные в списке будут неправильными после преобразования перекрестная таблица.


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

    Если у вас установлен Kutools for Excel, вы можете использовать его инструмент Транспонировать размеры таблицы для преобразования перекрестных таблиц в плоский список быстро.

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

    Шаг 1: Выберите таблицу, которую вы преобразуете в список.

    Шаг 2: Нажмите Kutools > Изменить > Транспонировать измерение таблицы . См. Следующий снимок экрана:

    Шаг 3: Транспонирование В диалоговом окне «Размеры таблицы» установите флажок Перекрестная таблица для списка и выберите Диапазон результатов , нажав кнопку кнопка.

    Шаг 4: Нажмите кнопку OK .

    Затем вы увидите, что исходная таблица преобразована в плоский список, как показано на следующем снимке экрана:

    Размеры транспонированной таблицы также могут преобразовывать список в кросс-таблицу Таблица. Для получения дополнительной информации перейдите к Размеры транспонированной таблицы .


    Относительные статьи:

    • Преобразование плоского списка в двумерную кросс-таблицу

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

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

    Предположим, у вас есть кросс-таблица, и вам нужно преобразовать ее в список следующим образом.


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

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

    Шаг 1: Удерживайте другой + F11 ключей в Excel, и откроется окно Microsoft Visual Basic для приложений.

    Шаг 2: нажмите Вставить > Модулии вставьте следующий макрос в окно модуля.

    VBA при транспонировании кросс-таблицы в список:

    Подложка ConvertTableToList ()
    Константа TEST_COLUMN как String = «A»
    Dim i до тех пор, j до тех пор
    Dim iLastRow As Long
    Dim iLastCol до тех пор
    Приложение.ScreenUpdating = False
    С ActiveSheet
    iLastRow = .Cells (.Rows.Count, TEST_COLUMN) .End (xlUp) .Row
    Для i = iLastRow To 2 Step -1
    iLastCol = .Cells (i, .Columns.Count) .End (xlToLeft) .Column
    Для j = iLastCol To 3 Step -1
    .Rows (i + 1) .Insert
    .Cells (i + 1, 2) .Value = .Cells (i, j) .Value
    .Cells (i, j) .Value = «»
    Следующий j
    Затем я
    .Rows (1) .Удалить
    Конец с
    Application.ScreenUpdating = True
    End Sub

    Шаг 3: нажмите F5 ключ для запуска этого макроса.

    Затем вы увидите преобразованный список, показанный на следующем снимке экрана:

    Примечание:

    1. Этот макрос VBA теряет некоторые данные исходной таблицы, такие как заголовки или другие. В этом случае заголовки (имя, оценка и класс) теряются.

    2. Вы можете изменить As String = «A», чтобы удовлетворить ваши потребности. Например, если кросс-таблица указана в столбце E, вы должны вместо «E» вместо «A».

    3. И если на листе есть другие данные, иногда данные в списке будут неправильными после преобразования кросс-таблицы.


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

    Если у вас есть Kutools for Excel установлен, вы можете использовать его Перенести размеры таблицы инструмент для быстрого преобразования кросс-таблиц в плоский список.

    Kutools for Excel включает более 300 удобных инструментов Excel. Бесплатная пробная версия без ограничений в течение 30 дней. Получить сейчас.

    Шаг 1: Выберите таблицу, которую вы преобразуете в список.

    Шаг 2: нажмите Кутулс >Изменить > Перенести размер таблицы. См. Следующий снимок экрана:

    Шаг 3. В диалоговом окне «Транспонировать размеры таблицы» установите флажок Перекрестная таблица в список вариант и выберите Диапазон результатов нажав на кнопку.

    Шаг 4: нажмите OK кнопку.

    Затем вы увидите, что исходная таблица преобразована в плоский список, как на следующем снимке экрана:

    Перенести размеры таблицы также можно преобразовать список в таблицу кросс-таблицы. Для получения дополнительной информации перейдите на Перенести размеры таблицы.


    Относительные статьи:

    • Преобразование плоского списка в 2-мерную кросс-таблицу

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

    Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

    • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
    • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
    • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
    • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
    • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
    • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
    • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
    • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
    • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

    вкладка kte 201905


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

    • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
    • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
    • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

    офисный дно

    Комментарии (3)


    Оценок пока нет. Оцените первым!

    Like this post? Please share to your friends:
  • Преобразовать дату в месяц с годом excel
  • Преобразовать дату в месяц excel формула
  • Преобразовать данные в ячейке excel
  • Преобразовать данные excel в данные xml
  • Преобразовать градусы минуты секунды в десятичные градусы в excel