Сводная таблица с текстом в значениях
Всем хороши сводные таблицы — и считают быстро, и настраиваются гибко, и дизайн можно накрутить в них нарядный, если требуется. Но есть и несколько ложек дегтя, в частности, невозможность создать сводную, где в области значений должны быть не числа, а текст.
Давайте попробуем обойти это ограничение и придумать «пару костылей» в подобной ситуации.
Допустим, наша компания возит в несколько городов России и Казахстана свою продукцию в контейнерах. Контейнеры отправляются не чаще, чем раз в месяц. Каждый контейнер имеет буквенно-цифровой номер. В качестве исходных данных имеется стандартная таблица с перечислением поставок, из которой нужно сделать некое подобие сводной, чтобы наглядно видеть номера контейнеров, отправленных в каждый город и каждом месяце:
Для удобства, давайте заранее сделаем таблицу с исходными данными «умной» с помощью команды Главная — Форматировать как таблицу (Home — Format as Table) и дадим ей имя Поставки на вкладке Конструктор (Design). В дальнейшем, это упростит жизнь, т.к. можно будет использовать имя таблицы и ее столбцов прямо в формулах.
Способ 1. Самый простой — используем Power Query
Power Query — это супермощный инструмент для загрузки и преобразований данных в Excel. Эта надстройка по умолчанию встроена в Excel начиная с 2016-й версии. Если у вас Excel 2010 или 2013, то ее можно отдельно скачать и установить (совершенно бесплатно).
Весь процесс, для наглядности, я пошагово разобрал в следующем видео:
Если нет возможности использовать Power Query, то можно пойти другими путями — через сводную таблицу или формулы.
Способ 2. Вспомогательная сводная
Добавим к нашей исходной таблице еще один столбец, где с помощью простой формулы вычислим номер каждой строки в таблице:
Очевидно, что -1 нужен, поскольку у нас в таблице есть однострочная шапка. Если ваша таблица лежит не в начале листа, то можно использовать чуть более сложную, но универсальную формулу, которая вычисляет разницу в номерах текущей строки и шапки таблицы:
Теперь стандартным образом построим на основе наших данных сводную таблицу желаемого вида, но в поле значений закинем поле Номер строки вместо нужного нам Контейнера:
Поскольку у нас не бывает нескольких контейнеров в одном и том же городе в один и тот же месяц, то наша сводная выдаст, фактически, не сумму, а номера строк нужных нам контейнеров.
Дополнительно можно отключить общие и промежуточные итоги на вкладке Конструктор — Общие итоги и Промежуточные итоги (Design — Grand Totals, Subtotals) и там же переключить сводную в более удобный табличный макет кнопкой Макет отчета (Report Layout).
Таким образом мы уже на полпути к результату: у нас есть таблица, где на пересечении города и месяца стоит номер строки в исходной таблице, где лежит нужный нам код контейнера.
Теперь скопируем сводную (на этот же лист или на другой) и вставим как значения, а затем введем в область значений свою формулу, которая будет извлекать код контейнера по номеру строки, найденному в сводной:
Функция ЕСЛИ (IF), в данном случае, проверяет, чтобы очередная ячейка в сводной была не пустой. Если пустая, то выводим пустую текстовую строку «», т.е. оставляем ячейку незаполненной. Если не пустая, то извлекаем из столбца Контейнер исходной таблицы Поставки содержимое ячейки по номеру строки с помощью функции ИНДЕКС (INDEX).
Пожалуй, единственным не очень очевидным моментом тут является задвоенное слово Контейнер в формуле. Такая странная форма записи:
Поставки[[Контейнер]:[Контейнер]]
… нужна лишь для того, чтобы ссылка на столбец Контейнер была абсолютной (как ссылка со знаками $ для обычных «не умных» таблиц) и не сползала на соседние столбцы при копировании нашей формулы вправо.
В будущем, при изменении данных в исходной таблице Поставки, необходимо не забыть обновить нашу вспомогательную сводную с номерами строк, щелкнув по ней правой кнопкой мыши и выбрав команду Обновить (Refresh).
Способ 3. Формулы
Этот способ не требует создания промежуточной сводной таблицы и ручного обновления, а использует «тяжелое оружие Excel» — функцию СУММЕСЛИМН (SUMIFS). Вместо поиска номеров строк в сводной их можно вычислить с помощью вот такой формулы:
При некоторой внешней громоздкости, на самом деле, это стандартный вариант использования функции выборочного суммирования СУММЕСЛИМН, которая суммирует номера строк для заданного города и месяца. Опять же, поскольку у нас не бывает нескольких контейнеров в одном и том же городе в один и тот же месяц, то наша функция выдаст, фактически, не сумму, а сам номер строки. А затем уже знакомой по предыдущему способу функцией ИНДЕКС можно извлечь и коды контейнеров:
Само-собой, в этом случае уже не нужно думать про обновление сводной, но на больших таблицах функция СУММЕСЛИ может ощутимо тормозить. Тогда придется отключать автоматическое обновление формул или же воспользоваться первым способом — сводной таблицей.
Если внешний вид сводной вам не очень подходит для отчета, то можно вытаскивать из нее номера строк в финальную таблицу не напрямую, как мы делали, а с помощью функции ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ (GET.PIVOT.DATA). Как это сделать можно посмотреть здесь.
Ссылки по теме
- Как создать отчет с помощью сводной таблицы
- Как настроить вычисления в сводных таблицах
- Выборочный подсчет с помощью функций СУММЕСЛИМН, СЧЕТЕСЛИМН и т.п.
Данная статья содержит информацию о том, как с помощью надстройки Power Pivot в Excel добавлять текстовые поля в область значений сводной таблицы. Это может быть полезно, когда необходимо перечислить сущности, не добавляя их в группировку сводной таблицы. Такими сущностями могут быть номера договоров, перечень ассортимента, различные комментарии и другие характеристики.
ИНСТРУКЦИЯ ПО ДОБАВЛЕНИЮ ТЕКСТОВЫХ ПОЛЕЙ В СВОДНУЮ ТАБЛИЦУ
Чтобы с помощью надстройки Power Pivot добавить текст в сводную таблицу, нужно выполнить последовательно следующие действия:
Шаг 1. Включаем надстройку Power Pivot.
Надстройка Power Pivot входит в стандартный комплект Excel 2013, 2016 и Excel 365 для Windows. Она подключается одной галочкой в окне надстроек:
Файл → Параметры → Надстройки → Надстройки COM → Microsoft Power Pivot.
Шаг 2. Загружаем исходную таблицу Exсel в модель данных Power Pivot и создаем сводную таблицу с подключением к модели. В качестве примера возьмем таблицу (рис. 1), в которой ведутся остатки ассортимента в магазине обуви.
Исходную таблицу с информацией об остатках обуви загружаем в модель данных Power Pivot, как показано на рис. 2.
Выполнив загрузку, выходим из окна Power Pivot, создаем новый лист, через команду «Вставка» строим сводную таблицу.
Важный момент: в случае с Power Pivot для создания сводной таблицы выделять исходную таблицу не нужно.
Шаг 3. Добавим в область строк сводной таблицы следующие поля: Тип обуви, Полное наименование, Размеры, Цвет (рис. 3).
Для начала подсчитаем количество уникальных цветов для выбранной группировки.
По аналогии с вычисляемыми полями сводной таблицы в Power Pivot есть меры, которые создают такие же вычисляемые поля. В отличие от классических вычисляемых полей меры более функциональны и интуитивно понятны.
Чтобы создать меру, нужно на вкладке Power Pivot выбрать «Меры» и «Создать меру» (см. рис. 3).
В окне создания меры необходимо указать таблицу, в которой данная мера располагается, имя меры и формулу. По желанию можно указать формат и описание (рис. 4). Одним из вариантов определения количества уникальных цветов будет мера, записанная следующим образом:
Цвета:=
COUNTROWS(VALUES(‘Остатки'[Цвет])).
Функция VALUES() создает таблицу из одного столбца с уникальными значениями (в нашем случае это «коричневый», «синий», «черный»).
Функция COUNTROWS() подсчитывает в таблице количество строк.
К мере применяются фильтры сводной таблицы (учитываются ее разрезы).
Рассмотрим, как считает написанная мера.
В группировке Ботильонов и следующего наименования обуви указано 3 — максимальное количество уникальных цветов. Все три цвета повторяются в первом по порядку размере 38, поэтому у данного размера тоже 3. В размере 39 только один цвет, поэтому стоит 1 (рис. 5).
Если функция VALUES() имеет единственное значение, то в значения сводной таблицы его можно добавить текстом, а не только рассчитать количество таких значений, чем ограничивается стандартный Excel.
Предположим, нами создана мера, которая выглядит следующим образом:
Цвета:=
VALUES(‘Остатки'[Цвет]).
Мы получим сообщение об ошибке, так как в строках, где уникальных значений больше одного, результатом функции VALUES() также является более одного значения (рис 6).
Чтобы обойти данную ошибку, нужно определить, когда VALUES() возвращает одно или несколько значений. Для этого воспользуемся функцией HASONEVALUE(). Она возвращает 1 (ИСТИНА), если в ней столбец с одним значением, и 0 (ЛОЖЬ), если столбец с несколькими значениями.
Материал публикуется частично. Полностью его можно прочитать в журнале «Планово-экономический отдел» № 10, 2018.
Можете ли вы создать сводную таблицу с текстом в области значений? У Сьюзан из Мельбурна, Флорида, есть текстовое поле, и она хочет видеть до и после этого текста.
Традиционно вы не можете переместить текстовое поле в область значений сводной таблицы.
Однако, если вы используете модель данных, вы можете написать новое вычисляемое поле на языке DAX, которое будет отображать текст в качестве результата.
- Убедитесь, что ваши данные отформатированы как таблица, выбрав одну ячейку в данных и нажав Ctrl + T. Запишите имя таблицы, как показано на вкладке «Работа с таблицами» на ленте.
-
Вставка, сводная таблица. При создании сводной таблицы выберите «Добавить эти данные в модель данных».
Модель данных открывает множество функций
-
Перетащите поля в строки и столбцы сводной таблицы.
Начать создание сводной таблицы
-
Чтобы добавить текст в область значений, вы должны создать новый специальный вид вычисляемого поля под названием Мера. Найдите имя таблицы в верхней части списка полей сводной таблицы. Щелкните имя таблицы правой кнопкой мыши и выберите «Добавить меру».
Заметка
Если у вас нет этой опции, значит, вы не выбрали «Добавить эти данные в модель данных» на шаге 2.
Меры позволяют использовать больше функций, чем традиционные поля
- Введите имя поля ListOfCodes
- Формула
=CONCATENATEX(Table1,Table1(Code),", ")
- Оставьте формат как Общий
-
Нажмите Проверить формулу DAX, чтобы убедиться в отсутствии опечаток.
Настроить меру
-
Щелкните ОК. Новая мера появится в списке полей.
Перетащите это поле в область значений
-
Когда вы перетаскиваете ListOfCodes в область значений, вы увидите список кодов для каждой ячейки в области значений.
Крис из Лос-Анджелеса сменил Apple на Fig.
Заметка
Вероятно, важно удалить общие итоги из этой сводной таблицы. В противном случае на пересечении строки общей суммы и столбца общей суммы будут перечислены все коды в таблице, разделенные столбцами. Вы можете перейти к разделу «Инструменты сводной таблицы», «Общие итоги», «Выключить» для строк и столбцов.
Удивительно, но когда вы переупорядочиваете поля в строках и столбцах, CONCATENATEX обновляется.
После использования этого метода в течение нескольких недель я и другие заметили, что в некоторых наборах данных объединенные значения будут содержать дубликаты, такие как данные Fig, Fig, показанные в восточном регионе выше. Благодаря Робу Колли из PowerPivotPro.com вы можете удалить дубликаты, изменив
=CONCATENATEX(Table1, Table1(Code), ”, “)
к
=CONCATENATEX(Values(Table1(Code)), Table1(Code), ", ")
Функция VALUES возвращает новую таблицу с уникальными значениями, найденными в столбце.
Смотреть видео
Скачать файл Excel
Чтобы загрузить файл Excel: pivot-table-with-text-in-values-area.xlsx
Язык формул DAX позволяет выполнять множество новых вычислений в сводной таблице.
Идея дня в Excel
Я попросил совета у моих друзей-мастеров Excel по поводу Excel. Сегодняшняя мысль задуматься:
«Excel побеждает все»
Кевин Лербасс
- Remove From My Forums
-
Question
-
Dear All,
I am generating an excel sheet with a pivot table in excel 2007 xlsx format, backed by an sql server query. The query results contain a data value column, multiple dimension as expected, and a footnote column (usually 1-2 character long codes) that applies
to some of the rows in the result set.My users do not really want any aggregation but reorientation of columns/rows and filtering capabilities of the pivot table. So, we do not have the conceptual problem of what to do with aggregated text. Everything works fine except for the fact that the
footnotes are not displayed in the pivot table along with the data value when I put the footnotes column into the data fields area. Instead, it shows the count of (or sum, or ..) of them.I found on the other groups that Shane Devenshire had a solution to displaying text in the pivot table data area but I could not find the actual code anywhere on the internet.
Any solutions to showing text in pivot table data area that works with excel 2007? or any other suggestion that might work for my problem, please?
Thanks a lot
Kemal
Answers
-
Hi Kemal,
To the issue about How to show text in a pivot table’s values area instead of numbers, I suggest you try following method.
For example, if you add the Region field to the Values area, you’d like to see the region’s name, instead of a Count Of Region number.
If you use Crosstab queries in Microsoft Access, you might have achieved this by using the First or Last summary function, instead of Sum or Count.
Unfortunately, the First and Last functions aren’t available in Excel pivot tables, so there’s no easy way to show text in the Values area.
Workaround #1 – Use the Row Fields
You could add the Region field to the Row Labels area, with the City field. Then add another field in the Values area to show a count of the regions. The layout won’t be exactly what you wanted, but it will show the region name.
Workaround #2 – Create a Custom Number Format
In this example, there are only two region names, so you could use a custom number format to show the region names. You’ll assign a number to each region, then use that number in the pivot table. Note: This technique is limited to 2 items.
Create the Region Number field:
- In the source data, add a new column with the heading RegNum. In this column, type a 1 for East region orders and 2 for North region orders.
- Refresh the pivot table, so the RegNum appears in the Field List.
- Add the RegNum field to the Values area, and right-click on one of the numbers.
- In the popup menu, click summarize by Max.
Apply a Custom Number Format:
- Right-click a Region value in the Values area in the pivot table.
- In the popup menu, click Number Format.
- In the Category list, click Custom.
- In the Type box, enter [=1]“East”;[=2]“North”;General
- Click OK, to close the dialog box.
The pivot table will show the Region names, instead of the Region numbers.
Hope that helps.
-
Marked as answer by
Thursday, December 2, 2010 7:04 AM
создать сводную таблицу с текстовым значением |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |