Могу ли я получить реляционные данные в сводную таблицу Excel?
-
20-09-2019 - |
Вопрос
У меня есть лист (в качестве примера рассмотрим вина), в котором перечислены все бутылки вина в моем погребе, когда я их купил, сколько заплатил и т. д.
Есть столбец, в котором вино описывается тегами, разделенными запятыми, например «Фруктовое, Белое».
На основе этих данных я создал сводную таблицу с описанием в виде столбца фильтра.Однако я не могу отфильтровать его по «Белому».Мне нужно найти каждое описание, содержащее слово «Белый», например «Сухой, Белый», «Белый, Хрустящий» и т. д.
Поскольку я имею опыт работы с РСУБД, моя естественная склонность состоит в том, чтобы поместить теги в их собственную таблицу, привязанную к строке вина, чтобы в каждой строке вина было ноль или более строк тегов.
Как, как я могу использовать это для фильтрации винных рядов?
Решение
Да, вы можете сделать это в Excel, и поля описания могут оставаться как «Сухой, Белый» и т. д., поскольку вам не нужно разделять значения, разделенные запятыми.
Допустим, источник таблицы содержит текстовый столбец для описания, числовой столбец для значения и числовой столбец для года покупки.
Ваша опорная точка настроена следующим образом:
Поля:Описание, стоимость и год покупки.
Метки столбцов:Год покупки
- Заголовки строк:Описание
- Сумма значений:Сумма значений
В метках строк есть раскрывающийся фильтр меток — нажмите на него, и появится возможность выбрать «Фильтры меток».Выберите это, а затем выберите Содержит.Вы можете ввести «Белый», и будут выбраны все ваши описания, содержащие белый цвет, например.«Сухой, Белый», «Белый, Хрустящий».Фильтр включает в себя?для обозначения одного символа и * для обозначения любой серии символов.
Существуют аналогичные фильтры меток для «начинается с» и «заканчивается на», а также есть отрицание.
Я попробовал это в Excel 2007, и в 2003 году это тоже должно работать.Я думаю, что в Excel 2003 вы могли бы даже комбинировать фильтры, например.содержит «Белый» и не содержит «Сухой», но в 2007 году я не мог найти способ сделать это.
Другие советы
Простите, если я говорю очевидное, но причина, по которой у вас возникли проблемы, заключается в том, что столбец описания не находится в 1NF, а интерфейс сводной таблицы Excel недостаточно гибок, чтобы обеспечить поиск на основе шаблонов.
Самый простой вариант — нормализовать CSV-файл на ряд столбцов, каждый из которых представляет один атрибут — один столбец для цвета вина, один для сладости, один для страны происхождения и т. д. — и применить фильтр к нескольким столбцам.Однако, если (как предполагает ваш комментарий к вопросу) вино является метафорой вашей реальной проблемы, вы, возможно, не сможете позволить себе роскошь пересмотреть дизайн исходных данных.
Другая возможность может заключаться в использовании макроса (или запроса к базе данных — из вашего вопроса я не понимаю, внедрили ли вы уже систему тегов) для предварительной фильтрации входных данных на исходном листе сводной таблицы на основе значений тегов, которые вы используете. хотите выполнить поиск, а затем повторно обновите сводную таблицу на основе этих данных.
Третья возможность — это VBA, используемый в этот вопрос, который выглядит так, как будто он будет настраивать видимые строки сводной таблицы.
=ЕСЛИ(ISERR(НАЙТИ("БЕЛЫЙ",ВЕРХНИЙ(B5))),0,1)
создайте дополнительный столбец и добавьте формулу.Для этого есть 2 хитрости.Один из них — искать БЕЛЫЙ в столбце описания, используя верхнюю часть — чтобы обойти тот факт, что поиск в Excel чувствителен к регистру.Во-вторых, он возвращает ошибку значения, если строка не существует, поэтому iserr позволит вам перехватить это и вернуть в этом примере 0, если строка не существует, или 1, если существует.Вы можете заменить 1 и 0 белым и пустым.
вы можете написать сценарий, который просматривает данные и добавляет новые строки для каждого элемента, разделенного запятыми, в столбце описания.Это позволит сводной таблице лучше фильтровать.