Excel сводная таблица текстовые значения

Сводная таблица с текстом в значениях

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

Давайте попробуем обойти это ограничение и придумать «пару костылей» в подобной ситуации.

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

Исходные данные и результат

Для удобства, давайте заранее сделаем таблицу с исходными данными «умной» с помощью команды Главная — Форматировать как таблицу (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. Она подключается одной галочкой в окне надстроек:

ФайлПараметрыНадстройкиНадстройки COMMicrosoft 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, которое будет отображать текст в качестве результата.

  1. Убедитесь, что ваши данные отформатированы как таблица, выбрав одну ячейку в данных и нажав Ctrl + T. Запишите имя таблицы, как показано на вкладке «Работа с таблицами» на ленте.
  2. Вставка, сводная таблица. При создании сводной таблицы выберите «Добавить эти данные в модель данных».

    Модель данных открывает множество функций
  3. Перетащите поля в строки и столбцы сводной таблицы.

    Начать создание сводной таблицы
  4. Чтобы добавить текст в область значений, вы должны создать новый специальный вид вычисляемого поля под названием Мера. Найдите имя таблицы в верхней части списка полей сводной таблицы. Щелкните имя таблицы правой кнопкой мыши и выберите «Добавить меру».

    Заметка

    Если у вас нет этой опции, значит, вы не выбрали «Добавить эти данные в модель данных» на шаге 2.

    Меры позволяют использовать больше функций, чем традиционные поля
  5. Введите имя поля ListOfCodes
  6. Формула =CONCATENATEX(Table1,Table1(Code),", ")
  7. Оставьте формат как Общий
  8. Нажмите Проверить формулу DAX, чтобы убедиться в отсутствии опечаток.

    Настроить меру
  9. Щелкните ОК. Новая мера появится в списке полей.

    Перетащите это поле в область значений
  10. Когда вы перетаскиваете 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.

    PivotTextVal01

    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.

    PivotTextVal02

    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:

    1. 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.
    2. Refresh the pivot table, so the RegNum appears in the Field List.
    3. Add the RegNum field to the Values area, and right-click on one of the numbers.
    4. In the popup menu, click summarize by Max.

    PivotTextVal03

    Apply a Custom Number Format:

    1. Right-click a Region value in the Values area in the pivot table.
    2. In the popup menu, click Number Format.
    3. In the Category list, click Custom.
    4. In the Type box, enter [=1]“East”;[=2]“North”;General
    5. Click OK, to close the dialog box.

    PivotTextVal04

    The pivot table will show the Region names, instead of the Region numbers.

    PivotTextVal05

    Hope that helps.

    • Marked as answer by

      Thursday, December 2, 2010 7:04 AM

создать сводную таблицу с текстовым значением

Tunka-s

Дата: Среда, 09.09.2015, 17:43 |
Сообщение № 1

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 124


Репутация:

0

±

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


Excel 2010

Здравствуйте

Не подскажете, можно ли создать сводную таблицу, чтобы в значении была не функция, а текст? Совершенно точно помню, что это возможно при помощи пользовательского форматирования, но тогда в значениях может быть только очень ограниченный набор возможных текстовых значений. А если нужен бесконечный? И если сводная таблица не поможет, то возможно подсkажете другое решение?
Пример прилагается. Заранее спасибо.

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

Example.xlsx
(10.1 Kb)

 

Ответить

YouGreed

Дата: Среда, 09.09.2015, 17:53 |
Сообщение № 2

Группа: Проверенные

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

Сообщений: 589


Репутация:

123

±

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


Excel 2010

Tunka-s, Так? Не через сводную.

Код

=ЕСЛИОШИБКА(ИНДЕКС($K$3:$K$12;ПОИСКПОЗ($A17&E$16;$A$3:$A$12&$J$3:$J$12;));»»)

[offtop]Формула массивна. Вводится так: Ctrl+Shift+Enter.

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

5712203.xlsx
(10.5 Kb)

Сообщение отредактировал YouGreedСреда, 09.09.2015, 17:54

 

Ответить

Tunka-s

Дата: Среда, 09.09.2015, 18:00 |
Сообщение № 3

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 124


Репутация:

0

±

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


Excel 2010

YouGreed
Да, этот вариант рассматривался на крайний случай, если ничего более интересного не придумается. Дело в том, что иногда одному значению соответствует несколько SH или PY. С формулой определяется только одно значение.

 

Ответить

buchlotnik

Дата: Среда, 09.09.2015, 18:04 |
Сообщение № 4

Группа: Заблокированные

Ранг: Участник клуба

Сообщений: 3442


Репутация:

929

±

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


2010, 2013, 2016 RUS / ENG

Tunka-s, а Customer у вас всегда обозначен числовым индексом?

 

Ответить

Russel

Дата: Среда, 09.09.2015, 18:40 |
Сообщение № 5

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

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

Сообщений: 1392


Репутация:

318

±

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


Excel 2010

С костылями — сводная и простые формулы

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

5368264.xlsx
(15.3 Kb)


QIWI 9173973973

 

Ответить

Tunka-s

Дата: Четверг, 10.09.2015, 09:30 |
Сообщение № 6

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 124


Репутация:

0

±

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


Excel 2010

Здравствуйте, извиняюсь за долгое молчание. buchlotnik: да, customer всегда обозначается числовым кодом.

 

Ответить

Tunka-s

Дата: Четверг, 10.09.2015, 09:38 |
Сообщение № 7

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 124


Репутация:

0

±

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


Excel 2010

Russel, спасибо. :) Это вариант, что-то я про него не подумала. Наверное потому что хотелось сделать красиво — кликаешь на номер и открываются все детали партнера. А в этом случае придется смотреть на номер, потом либо лезть в базу данных, либо искать соответствующую клетку в сводной. А это сразу несколько утяжеляет процесс, учитывая, что customers 27000.

 

Ответить

_Boroda_

Дата: Четверг, 10.09.2015, 09:57 |
Сообщение № 8

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

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

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


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Tunka-s

Дата: Четверг, 10.09.2015, 10:11 |
Сообщение № 9

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 124


Репутация:

0

±

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


Excel 2010

Boroda, спасибо огромное! Очень-очень похоже на правду. Прямо и перламутровые пуговички не месте! :) Сейчас все это применю в исходном файле и посмотрю, вытянет ли мой комп такую красоту. :) Спасибо еше раз!

 

Ответить

Like this post? Please share to your friends:
  • Excel сводная таблица счетесли
  • Excel сводная таблица суммирование
  • Excel сводная таблица сумма по строками
  • Excel сводная таблица сумма по полю
  • Excel сведение таблиц в одну таблицу