Видео
Постановка задачи
Имеем таблицу, с которой постоянно приходится работать (сортировать, фильтровать, считать по ней что-то) и содержимое которой периодически изменяется (добавляется, удаляется, редактируется). Ну, хотя бы, для примера — вот такого вида:
Размер — от нескольких десятков до нескольких сотен тысяч строк — не важен. Задача — всячески упростить и облегчить себе жизнь, превратив эти ячейки в «умную» таблицу.
Решение
Выделяем любую ячейку в таблице и на вкладке Главная (Home) разворачиваем список Форматировать как таблицу (Format as table):
В раскрывшемся списке стилей выбираем любой вариант заливки на наш вкус и цвет и в окне подтверждения выделенного диапазона жмем ОК и получаем на выходе примерно следующее:
В результате после такого преобразования диапазона в «умную» Таблицу (с большой буквы!) имеем следующие радости (кроме приятного дизайна):
- Созданная Таблица получает имя Таблица1,2,3 и т.д. которое, можно изменить на более адекватное на вкладке Конструктор (Design). Это имя можно использовать в любых формулах, выпадающих списках и функциях, например в качестве источника данных для сводной таблицы или массива поиска для функции ВПР (VLOOKUP).
- Созданная один раз Таблица автоматически подстраивается в размерах при добавлении или удалении в нее данных. Если дописать к такой Таблице новые строки — она растянется ниже, если добавить новые столбцы — разойдется вширь. В правом нижнем углу Таблицы можно увидеть автоматически перемещающийся маркер границы и, при необходимости, скорректировать его положение мышью:
- В шапке Таблицы автоматически включается Автофильтр (можно принудительно отключить на вкладке Данные (Data)).
- При добавлении новых строк в них автоматически копируются все формулы.
- При создании нового столбца с формулой — она будет автоматически скопирована на весь столбец — не надо тянуть формулу черным крестом автозаполнения.
- При прокрутке Таблицы вниз заголовки столбцов (A, B, C…) меняются на названия полей, т.е. уже можно не закреплять шапку диапазона как раньше (в Excel 2010 там еще и автофильтр):
- Включив флажок Показать итоговую строку (Total row) на вкладке Конструктор (Design) мы получаем автоматическую строку итогов в конце Таблицы с возможностью выбора функции (сумма, среднее, количество и т.д.) по каждому столбцу:
- К данным в Таблице можно адресоваться, используя имена отдельных ее элементов. Например, для суммирования всех чисел в столбце НДС можно воспользоваться формулой =СУММ(Таблица1[НДС]) вместо =СУММ(F2:F200) и не думать уже про размеры таблицы, количество строк и корректность диапазонов выделения. Также возможно использовать еще следующие операторы (предполагается, что таблица имеет стандартное имя Таблица1):
- =Таблица1[#Все] — ссылка на всю таблицу, включая заголовки столбцов, данные и строку итогов
- =Таблица1[#Данные] — ссылка только на данные (без строки заголовка)
- =Таблица1[#Заголовки] — ссылка только на первую строку таблицы с заголовками столбцов
- =Таблица1[#Итоги] — ссылка на строку итогов (если она включена)
- =Таблица1[#Эта строка] — ссылка на текущую строку, например формула =Таблица1[[#Эта строка];[НДС]] — будет ссылаться на значение НДС из текущей строки таблицы.
(В англоязычной версии эти операторы будут звучать, соответственно, как #All, #Data, #Headers, #Totals и #This row).
P.S.
В Excel 2003 было что-то отдаленно похожее на такие «умные» таблицы — называлось Списком и создавалось через меню Данные — Список — Создать список (Data — List — Create list). Но даже половины нынешнего функционала там не было и в помине. В более древних версиях Excel не было и этого.
Работа с умной таблицей из кода VBA Excel. Обращение к ячейкам, строкам и столбцам умной таблицы. Добавление и удаление строк и столбцов.
Обращение к умной таблице
Все примеры кода в этой статье привязаны к таблице с именем «Таблица1», расположенной на активном листе:
Обращение к умной таблице:
ActiveSheet.ListObjects(«Таблица1») |
Обращение к диапазону умной таблицы на рабочем листе:
ActiveSheet.ListObjects(«Таблица1»).Range |
Проверяем:
Debug.Print ActiveSheet.ListObjects(«Таблица1»).Range.Address ‘Результат: $B$3:$G$9 |
Далее все примеры кода VBA Excel, чтобы их не дублировать, будут представлены как аргументы метода Debug.Print.
Обращение к строкам
Работа с умной таблицей — обращение к строке заголовков:
Debug.Print ActiveSheet.ListObjects(«Таблица1»).Range.Rows(1).Address ‘Результат: $B$3:$G$3 |
Таким же образом можно обращаться и к остальным строкам таблицы (Строка1-Строка6), указывая индекс нужной строки от 2 до 7.
К записям таблицы (Строка1-Строка6) обращаются через коллекцию ListRows, указывая индекс записи от 1 до 6:
With ActiveSheet.ListObjects(«Таблица1») Debug.Print .ListRows.Count ‘Результат: 6 Debug.Print .ListRows(1).Range.Address ‘Результат: $B$4:$G$4 Debug.Print .ListRows(2).Range.Address ‘Результат: $B$5:$G$5 End With |
Обращение к столбцам
Обращение к третьему столбцу умной таблицы из кода VBA Excel:
With ActiveSheet.ListObjects(«Таблица1») ‘Обращение через диапазон умной таблицы Debug.Print .Range.Columns(3).Address ‘Результат: $D$3:$D$9 Debug.Print .Range.Columns.Count ‘Результат: 6 ‘Обращение через коллекцию ListColumns Debug.Print .ListColumns(3).Range.Address ‘Результат: $D$3:$D$9 Debug.Print .ListColumns.Count ‘Результат: 6 End With |
Обращение к ячейкам
Работа с умной таблицей — обращение к ячейке «E7» с отображением ее значения:
With ActiveSheet.ListObjects(«Таблица1») Debug.Print .Range.Cells(5, 4) ‘Результат: 91 Debug.Print .ListColumns(4).Range(5) ‘Результат: 91 Debug.Print .ListRows(4).Range(4) ‘Результат: 91 End With |
Вставка и удаление строк
Вставка новой строки в конец умной таблицы:
ActiveSheet.ListObjects(«Таблица1»).ListRows.Add |
Удаление последней строки:
With ActiveSheet.ListObjects(«Таблица1») .ListRows(.ListRows.Count).Delete End With |
Вставка новой строки на место пятой записи (Строка5 в таблице) со сдвигом пятой и нижерасположенных записей вниз:
ActiveSheet.ListObjects(«Таблица1»).ListRows.Add 5 |
Удаление пятой строки:
ActiveSheet.ListObjects(«Таблица1»).ListRows(5).Delete |
Вставка и удаление столбцов
Вставка нового столбца в конец умной таблицы из кода VBA Excel:
ActiveSheet.ListObjects(«Таблица1»).ListColumns.Add |
Удаление последнего столбца:
With ActiveSheet.ListObjects(«Таблица1») .ListColumns(.ListColumns.Count).Delete End With |
Вставка нового столбца на место четвертой графы таблицы со сдвигом четвертой и последующих граф вправо:
ActiveSheet.ListObjects(«Таблица1»).ListColumns.Add 4 |
Удаление четвертого столбца таблицы:
ActiveSheet.ListObjects(«Таблица1»).ListColumns(4).Delete |
Создание и удаление умной таблицы описано в статье VBA Excel. Создание таблицы (умной, обычной)
Medison1 5 / 2 / 1 Регистрация: 04.03.2012 Сообщений: 28 |
||||||||
1 |
||||||||
10.03.2018, 05:32. Показов 37721. Ответов 5 Метки нет (Все метки)
Добрый день.
Последняя строка, мне не нравится, т.к. при добавлении столбца в начало таблицы. Формула «поедет». Т.к. нужно будет брать уже 4ый столбец и т.д. Что-то вроде:
0 |
1232 / 670 / 238 Регистрация: 22.12.2015 Сообщений: 2,089 |
|
10.03.2018, 08:09 |
2 |
Сообщение было отмечено Medison1 как решение Решение
WT.Range(i1, WTName & «[Столбец3]») Полагаю, range возвращает обычный диапазон, для которого доступно свойство cells. Не очень понял, что такое i3 — если это число, равное номеру строки, то код будет (например, что-бы выделить ячейку) Код WT.Range(WTName & "[Столбец3]").Cells(i1,1).Select или Код WT.Range(WTName & "[Столбец3]").Rows.Item(i1).Select
1 |
ji2n … 39 / 37 / 13 Регистрация: 08.10.2016 Сообщений: 171 |
||||
10.03.2018, 12:31 |
3 |
|||
Так формула не «поедет» :
Иными словами R -становится указателем на на искомый диапазон.
0 |
Medison1 5 / 2 / 1 Регистрация: 04.03.2012 Сообщений: 28 |
||||||||
10.03.2018, 12:51 [ТС] |
4 |
|||||||
Dinoxromniy, Пробовал еще так:
Ошибка: #13 Type mismatch Вот этот вариант оказался рабочим. Не нужно было писать перед этим «WT.»
ji2n,
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||||||
10.03.2018, 13:31 |
5 |
|||||||
Medison1, весь столбец (включая заголовок и ячейку из строки итогов)
Только столбец с данными например так
Хорошая шпаргалка по тому, как обращаться к разным частям умной таблицы: https://www.thespreadsheetguru… cel-tables
2 |
1232 / 670 / 238 Регистрация: 22.12.2015 Сообщений: 2,089 |
|
10.03.2018, 13:57 |
6 |
по какой-то причине не работают. Да, разумеется в обоих случаях должно быть WS вместо WT. Тут обращение происходит со стороны листа рабочей книги, а не через саму умную таблицу (последний случай смотрите у Казанский).
0 |
Умные таблицы появились в Excel, начиная с 2007 версии. Это привычные многим полосатые таблицы, которые выглядят примерно так:
И несмотря на то, что их используют уже много лет, еще остаются пользователи, которые используют этот крутой инструмент только потому что “красиво” или не используют совсем. Давайте разберемся, какие преимущества дают умные таблицыв Excel, помимо приятно-полосатого внешнего вида. Но сначала узнаем, как ее создать.
- Как создать умную таблицу в Excel
- Плюсы и минусы умной таблицы в Excel
- Форматирование умной таблицы
- Добавляем срезы (фильтры) к умной таблице
- Как убрать умную таблицу
Чтобы из обычной таблицы Excel сделать “умную” таблицу, нужно:
1. Щелкнуть на любой ячейке таблицы.
Обратите внимание, что всю таблицу выделять не обязательно — если в таблице нет пустых строк или столбцов, Excel сам определит границы диапазона.
2. Нажать сочетание клавиш Ctrl + T. Вокруг таблицы появится рамочка- выделение и окно Создать таблицу, в котором указан выделенный диапазон
Если вдруг это выделение не захватило какую-то нужную область, можно выделить область таблицы вручную.
Обратите внимание на предыдущую картинку — если ваша таблица уже имеет заголовки (“шапку”), то обязательно должна быть установлена “галочка” Таблица с заголовками. Иначе заголовки будут добавлены автоматически в формате Столбец1, Столбец2 и т.д.
Если таблица не имеет заголовков, то “галочку” Таблица с заголовками лучше снять и уже потом переименовать заголовки. Иначе в качестве заголовков будут назначены значение из первой строки.
3. Нажать Ок или клавишу Enter. Готово, у нас получилось преобразовать обычный диапазон в умную таблицу Excel.
Также есть второй способ создания умной таблицы.
1. Также щелкаем в любой ячейке таблицы.
2. Вкладка Главная — Блок Стили — Форматировать как таблицу — в Выпадающем окне выбираем стиль таблицы.
3. Далее также смотрим, чтобы выделение захватило весь нужный диапазон и была установлена галочка Таблица с заголовками и нажимаем Ок.
Плюсы и минусы инструмента умные таблицы в Excel
Преимущества инструмента Умные таблицы в Excel
1. Таблица автоматически расширяется при добавлении строк или столбцов.
Главное требование при этом — новый столбец или строка должны добавляться “впритык” к таблице — без пропусков строк или столбцов.
2. Формулы, введенные в ячейку, после нажатия Enter автоматически копируются на весь столбец.
3. Автоматически добавляются автофильтры ко всем столбцам. И на столбцы, добавленные уже после создания таблицы, фильтры также “навешиваются” автоматически. При этом фильтр можно убрать (см. в разделе Форматирование умной таблицы)
При прокрутке таблицы строка с заголовками и фильтрами закреплена вверху страницы, даже если вы отдельно не закрепляли области.
4. Умные таблицы в Excel имеет имя, которое присваивается автоматически, но его можно изменить.
Посмотреть и изменить имя умной таблицы в Excel можно на вкладке Конструктор таблиц (при этом курсор должен быть установлен на любой ячейке в таблице, иначе вкладка Конструктор таблиц не появится на ленте)
5. К умной таблице можно добавить срезы, такие же, как для сводной таблицы. Срезы в умной таблице упрощают ее фильтрацию и делают более отчет более профессиональным.
6. Структурированные формулы, которые легко читать.
В формулах внутри таблицы используются не привычные адреса ячеек и диапазонов, а специальные адреса, отражающие называние столбца или области внутри таблицы. Это облегчает “чтение” формулы (если, конечно, столбцам в таблице были даны релевантные названия).
7. Автоматическое добавление итогов к таблице с возможностью выбора вида итога (сумма, среднее и т.д.).
8. Удобно создавать сводные таблицы на основании умных таблиц. При добавлении новых столбцов или строк в исходную таблицу, они автоматически добавляются в сводную таблицу (после ее обновления) без необходимости настраивать диапазон.
9. Умные таблицы в Excel удобно загружать в Power Query для последующей обработки.
10. Ну и конечно, красивый “полосатый” внешний вид без “танцев с бубнами” с условным форматированием.
Еще одно преимущество “внешности” — легкая настройка форматирования умной таблицы в Excel. На вкладке Конструктор таблиц его можно быстро настроить (см. раздел Форматирование умной таблицы)
Но, конечно, “умные” таблицы в Excel имеют и ряд особенностей, которые могут затруднить их использование.
Минусы инструмента Умные таблицы в Excel
- При достаточно большом размере таблицы и большом количестве формул файл с умной таблицей может тормозить. Это связано с тем, что форматирование умной таблицы сделано по типу условного форматирования, которое “нагружает” файл.
- Если добавить строку итогов, то функция автоматического расширение «умной таблицы» по строкам при добавлении данных перестает работать. Это логично, т.к. не могут же новые строки с данными быть после строки итогов. Расширить таблицу в этом случае можно только растягиванием за уголок.
- Заголовки можно располагать только в первой строке умной таблицы. Это лишает возможность делать сложные «шапки» таблиц, а также использовать одинаковые названия столбцов — если столбцы будут называться одинаково, Excel автоматически добавить к ним цифру 2, 3 и т.д.
- Формулы могут становятся очень длинными, поскольку в формулу прописывается наименование столбца. Особенно если заголовки длинные сами по себе. Этот момент ограничивает возможность давать сложные названия столбцам.
- Нет возможности закрепить ячейки или столбцы абсолютными/относительными ссылками, и при “протягивании” формулы ссылки съезжают.
- Нельзя установить режим совместного доступа в файл, который содержит хотя бы одну “умную” таблицу.
Форматирование умной таблицы
Можно достаточно гибко настраивать форматирование умной таблицы в Excel.
Настройка внешнего вида умной таблицы
- Откроем вкладку Конструктор таблиц (при этом должна быть активна любая ячейка внутри таблицы)
- В блоке Стили таблиц можно выбрать подходящий стиль из выпадающего списка.
Также можно создать собственный стиль таблицы умной таблицы в Excel.
Вкладка Конструктор таблиц — блок Стили таблиц — выпадающий список — Создать стиль таблицы. И далее поочередно настроить форматирование для каждого элемента таблицы. Для этого нужно выбрать элемент, нажать на кнопку Формат и выбрать нужные параметры заливки, шрифта и т.д.
К тому же, никто не запрещает настраивать внешний вид таблицы вручную. Например, сделать заливку определенного заголовки или ячейки другим цветом.
Также можно очистить стиль умной таблицы.
Это отличное решение для таблиц, которые используются в промежуточных расчетах, и находятся не “на виду”, поскольку отсутствие стиля облегчает работу файла.
Для этого нужно щелкнуть на любой ячейке таблицы — вкладка Конструктор таблиц — блок Стили таблиц — выпадающий список — Очистить.
Теперь таблица не имеет форматирование. Но она не перестала быть умной таблицей! Обратите внимание, что у нее так же есть границы и имя, следовательно, это такая же умная таблица, просто не цветная.
Параметры стиля умных таблиц в Excel
Если вы выбрали предустановленный стиль умной таблицы в Excel, то можно сделать его поднастройку. На вкладке Конструктор таблиц в блоке Параметры стилей таблиц можно настроить параметры установкой/снятием “галочек”
- Строка заголовков: включает и отключает заголовки в таблице
- Строка итогов: включает/отключает строку итогов.
- Чередующиеся строки — включает/отключает “полосатость” таблицы, все строки становятся бесцветными.
- Чередующиеся столбцы — включает/отключает чередования цвета столбцов. Со включенным параметром столбцы окрашиваются цветом “через один”
- Первый столбец и Последний столбец — включает/отключает жирный шрифт для первого и последнего столбца в таблице.
- Кнопка фильтра — включает/отключает автофильтр.
Как изменить имя умной таблицы в Excel
Также на вкладке Конструктор таблиц можно изменить имя таблицы. По умолчанию Excel присваивает таблицам имена типа Таблица1, Таблица2… Однако, лучше их менять на более релевантные, это удобно для использования в формулах.
Чтобы изменить имя умной таблицы, заходим на вкладку Конструктор таблиц — Блок Свойства — в поле Имя таблицы пишем новое имя.
Добавляем срезы (фильтры) к умной таблице
Срезы в умных таблицах выглядят аналогично срезам в сводных таблицах. Они упрощают фильтрацию таблиц.
Чтобы добавить срез к умной таблице в Excel, нужно перейти на вкладку Конструктор таблиц (должна быть активна любая ячейка внутри таблицы) — блок Инструменты — Вставить срез.
Далее нужно отметить галочками, срезы по каким столбцам нужны. Для примере выберем срезы по Дате и Адресу магазина.
Срезы добавлены. Теперь можно фильтровать данные в умной таблице Excel с их помощью.
Как убрать умную таблицу
Иногда нужно преобразовать умную таблицу обратно в диапазон — это значит, что нужно убрать умную таблицу и оставить просто данные.
Для этого переходим на вкладку Конструктор таблиц — блок Инструменты — Преобразовать в диапазон
В появившемся окне нажимаем кнопку Да.
Таблица не изменила свой внешний вид — но она перестала быть умной таблицей (т.е. лишилась всех ее функций — см. раздел Плюсы и минусы умной таблицы в Excel).
В этой статье мы узнали, что такое умные таблицы в Excel, а также познакомились с особенностями таких таблиц.
Вам может быть интересно:
Что такое выпадающий список
Выпадающий список в Excel (или раскрывающийся список) — это список в ячейке Excel, из которого можно выбрать одно из нескольких заранее заданных значений. Это удобно для быстрого и правильного заполнения данных: не вбивать руками, а просто выбрать. Тут же можно настроить контроль, чтобы пользователи не могли вносить значения, не предусмотренные в списке.
Выпадающий список работает так: выбираете ячейку и справа от нее появляется кнопка со стрелкой вниз (правда, стрелка больше похожа на треугольник).
После нажатия на кнопку списка появится перечень доступных значений, одно из которых можно выбрать.
Значений в списке может быть много, но в обзор помещается до 8 строк. Если значений в списке больше восьми, справа от них появится полоса прокрутки.
Создание выпадающего списка
Чтобы создать выпадающий список, выделите ячейку, где он должен появиться (или группу ячеек) и перейдите на вкладку Данные -> Проверка данных.
В появившемся окне укажите тип данных – Список, поставьте галочку рядом со строкой «Список допустимых значений».
Источником данных может быть:
- Текст – пишется через точку с запятой «;» и без знака равно «=», например
Материалы;Заработная плата;Амортизация
- Ссылки на ячейки:
=$A$1:$A$7
- Именованный диапазон:
=ИмяДиапазона
и т.д.
Связанные выпадающие списки
Связанные выпадающие списки – это списки, в которых выпадающие значения появляются не «просто так», а в зависимости от уже заполненных данных. Так, для выбранной группы появится только список входящих в неё наименований.
Создадим выпадающие списки несколькими способами – для разных таблиц с исходными данными.
Способ 1. Названия групп в заголовках столбцов, в строках – элементы групп.
Способ 2. Названия групп – в первом столбце, элементы групп – во втором столбце.
Способ 1. Связанные выпадающие списки из таблицы с группами в заголовках столбцов
Исходные данные: таблица с названиями групп в заголовках столбцов.
В этом способе используется всего одна простая формула — ДВССЫЛ (правда, непривычная обычным пользователям) и форматированная smart-таблица Excel (иногда их еще называют «умные» таблицы). Зато вы получите взаимозависимые списки и будете пользоваться ими по принципу «сделал и забыл». Не нужно будет переживать о том, что «слетит» диапазон и переделывать всю архитектуру данных. Просто один раз сделаете и будете пользоваться.
Справка:
Форматированная таблица – это таблица, у которой есть свое имя, свойства и структура. Такая таблица представляет из себя именованный «саморасширяющийся» диапазон. При добавлении в нее новых данных границы таблицы автоматически «захватят» новое значение.
У форматированной таблицы множество преимуществ по сравнению с обычной. Поэтому на курсах и семинарах я советую использовать такие таблицы везде, где есть такая возможность.
Создать форматированную таблицу просто: выделите диапазон ячеек и перейдите в меню Главная -> Форматировать как таблицу -> выберите понравившийся вид таблицы. Готово – форматированная таблица создана.
Формула ДВССЫЛ передает значения из ячейки, адрес которой записан в самой формуле в виде текстовой строки.
Например, записываем в ячейке B1 адрес ячейки А1. Формула ДВССЫЛ(B1) «увидит», какой адрес записан в ячейке B1, а результатом вычисления формулы будет текст, записанный в ячейке А1. Эту же формулу можно записать, указав адрес ячейки в кавычках – ДВССЫЛ(«А1»).
С помощью ДВССЫЛ можно обратиться к ячейке по адресу с помощью других формул, например СЦЕПИТЬ, & или ЕСЛИ и т.д. Так, формула на рисунке ДВССЫЛ(B1&C1) обращается к тексту в ячейке А1. После нажатия Enter в ячейке, где вводилась формула ДВССЫЛ(B1&C1) появится значение из ячейки A1, в нашем случае это «текст».
Пошаговая инструкция по созданию связанных выпадающих списков
Шаг 1. Создайте справочник исходных данных в виде форматированной smart-таблицы.
- Выделите таблицу со статьями и преобразуйте ее в smart-таблицу: выберите в меню Главная -> Форматировать как таблицу.
- В появившемся окне обязательно проверьте галочку рядом с надписью «Таблица с заголовками». Если ее нет – поставьте.
- Присвойте созданной таблице имя: выделите любую ячейку таблицы, перейдите на вкладку Конструктор, введите имя — «Источник».
Таблица «Источник» создана. Теперь можно обращаться к таблице и её элементам по имени. Например, название заголовка таблицы будет выглядеть так: =Источник[#Заголовки]
Столбец таблицы: =Источник[Материалы]
Чтобы появилась такая формула, нажмите равно = и выделите столбец, его имя появится в строке формул.
Шаг 2. Создайте выпадающий список с группами.
- Выделите ячейки в столбце «группа».
- Перейдите в меню Данные -> Проверка данных.
- В появившемся окне выберите тип данных — Список, а в строке Источник введите формулу =ДВССЫЛ(«Источник[#Заголовки]»)
Готово! В столбце «группа» появился выпадающий список.
Шаг 3. Создайте выпадающий список со статьями.
- Выделите столбец «статья» в таблице.
- Перейдите в меню Данные -> Проверка данных.
- В появившемся окне выберите тип данных — Список, а в строке Источник введите формулу: =ДВССЫЛ(«Источник[«&$G3&»]»)
В формуле $G3 – это первая ячейка из столбца «группа». Ссылка на столбец «зафиксирована» с помощью знака доллара $, а строка может изменяться.
Готово! В столбце «статья» появляется только список статей, входящих в группу.
Теперь в форматированную smart-таблицу можно добавлять новые группы и статьи. Добавим, например, новый столбец «Прочее», и такая группа сразу же появится в выпадающем списке.
Способ 2. Связанные выпадающие списки из таблицы с группами в первом столбце и элементами — во втором
Исходные данные: таблица с названиями групп в первом столбце, элементами групп – во втором столбце.
На самом деле в сети можно найти несколько вариантов реализации этого способа. Но у них у всех есть один недостаток: такой список нужно «администрировать». Потому что таблица должна быть всегда отсортирована по названиям групп – нельзя, чтобы группы располагались произвольно. Если группы будут идти «как попало», то формула, с помощью которой это всё сделано (СМЕЩ) не сработает, и список будет создаваться с ошибкой. Т.е. пользователю нужно все время сортировать первый столбец или добавлять туда данные в алфавитном порядке. А еще потребуется записывать где-то отдельно сами названия групп и это тоже нужно будет делать «вручную».
Мы придумали, как обойти эту проблему: с помощью сводных таблиц, которые будут за нас упорядочивать данные. Благодаря этому постоянное «администрирование» будет заменено на простую процедуру «обновить».
Для создания списков используем форматированные (умные) таблицы, сводные таблицы, формулы СМЕЩ + ПОИСКПОЗ + СЧЁТЗ, СЧЁТЕСЛИ и диспетчер имен.
Справка:
СМЕЩ выдает ссылку на диапазон ячеек, находящийся в указанном количестве ячеек от исходной. Ссылка определяется с учетом заданного в формуле размера диапазона – числа строк и столбцов. Другими словами, этой формулой вы можете «сказать» Excel-ю на сколько ячеек он должен отступить и какой диапазон «захватить».
Синтаксис формулы СМЕЩ такой:
СМЕЩ(ссылка ; смещ_по_строкам ; смещ_по_столбцам ; [высота] ; [ширина] ), где
- ссылка – ссылка, от которой вычисляется смещение, может быть адресом ячейки или группы ячеек;
- смещ_по_строкам – количество строк, которые требуется отсчитать вверх или вниз от начальной ссылки;
- смещ_по_столбцам – количество столбцов, которые требуется отсчитать влево или вправо от начальной ссылки;
- [высота] – число строк возвращаемой ссылки (необязательный);
- [ширина] – число столбцов возвращаемой ссылки (необязательный).
Ищет нужный нам элемент в диапазоне ячеек и выдает его порядковый номер в диапазоне.
Синтаксис ПОИСКПОЗ такой:
ПОИСКПОЗ( искомое_значение ; просматриваемый_массив ; [тип_сопоставления] )
- искомое_значение – значение, которое ищем. Может быть числом, текстом, логическим значением или ссылкой на ячейку;
- просматриваемый_массив – диапазон ячеек, где будем искать нужное значение;
- [тип_сопоставления] — число -1, 0 или 1, которое показывает, как сравнивать искомое значение с ячейками просматриваемого массива. Не переживайте, если не поняли, когда и что ставить, потому что 90% случаев нужно выбирать ноль.
Подробнее про эту формулу можно посмотреть в видеоинструкции: Какая формула лучше ВПР и работает с несколькими критериями
СЧЁТЗ просто считает количество непустых ячеек в диапазоне.
Почти тот же СУММЕСЛИ, только проще – подсчитывает количество значений, соответствующих определенному условию.
Пошаговая инструкция по созданию списков
Шаг 1. Преобразуйте исходные данные в форматированную smart-таблицу.
- Выделите таблицу со статьями и преобразуйте ее в smart-таблицу: перейдите в меню Главная -> Форматировать как таблицу.
- В появившемся окне обязательно проверьте галочку рядом с надписью «Таблица с заголовками». Если ее нет – поставьте.
- Присвойте таблице имя: на вкладке Конструктор введите имя таблицы — «статьи».
Форматированная таблица «статьи» создана.
Шаг 2. Создайте две сводные таблицы – одну с названиями групп, вторую — со статьями.
Для чего используем сводные таблицы? Во-первых, чтобы вручную не создавать перечень групп, а во-вторых, как уже упоминали выше, чтобы вручную не сортировать справочники статей (что иногда забывают сделать пользователи, а это важно, иначе формула СМЕЩ «срабатывает» с ошибкой). «Ручную» работу сделает вместо нас кнопка «Обновить» в меню Данные — нажимаем ее каждый раз после появления новых статей.
- Создайте первую сводную таблицу с группами статей.
Выделите любую ячейку таблицы с исходными данными, перейдите в меню Вставка -> Сводная таблица. Добавьте сводную таблицу на существующий лист и поместите группы в область строк.
- Создайте вторую сводную таблицу со статьями: меню Вставка -> Сводная таблица. В область строк поместите группы и статьи.
- Форматируем сводную таблицу со статьями и придаем ей вид справочника.
Выделите любую ячейку таблицы, перейдите на вкладку Конструктор -> Макет отчета -> Показать в табличной форме. У нас получится почти та таблица, которая нам нужна, но в ней автоматом появятся промежуточные суммы. Чтобы их отключить, идем: Промежуточные итоги -> Не показывать промежуточные суммы.
- Скройте строку «Общий итог» в обеих таблицах справочников. Перейдите на вкладку Конструктор -> Общие итоги -> Отключить для строк и столбцов.
В итоге получатся два справочника, как на рисунке ниже. Для удобства разместите таблицы рядом на одном листе – с первой строки и в столбцах A, C и D, как на рисунке (это поможет разобраться с формулой СМЕЩ).
Шаг 3. Создайте именованные диапазоны с помощью диспетчера имен.
- Откройте диспетчер имен: в меню Формулы -> Диспетчер имен.
- В появившемся окне нажмите кнопку «Создать».
-
- Введите имя «ГруппыСписок» и формулу, которая будет определять диапазон:
=СМЕЩ($A$1;1;0;СЧЁТЗ($A:$A)-1;1)
- Введите имя «ГруппыСписок» и формулу, которая будет определять диапазон:
Пояснения к формуле:
СМЕЩ ( $A$1 ; 1 ; 0 ; СЧЁТЗ( $A:$A ) – 1 ; 1 ) – определяет адрес ячеек с названиями групп.
-
- $A$1 – это первая ячейка в справочнике групп.
- Следующие цифры 1 ; 0 – это отступ от первой ячейки на 1 строку и 0 столбцов (отступ нужен, потому что в первой ячейке название столбца).
- СЧЁТЗ( $A:$A ) – 1 Считаем число непустых ячеек в столбце А. Вычитаем -1, потому что название столбца не должно быть в списке.
- Последнее число 1 в формуле – это количество столбцов.
Нажмите ОК. Названия листов в формуле появятся сами.
- Точно так же создайте в диспетчере имен список статей.
Введите имя ГруппыСтатей, а для диапазона – формулу:
=СМЕЩ($C$1;ПОИСКПОЗ($G2;$C:$C;0)-1;1;СЧЁТЕСЛИ($C:$C;$G2);1)
Пояснения к формуле:
СМЕЩ ( $C$1 ; ПОИСКПОЗ ( $G2 ; $C:$C ; 0 ) – 1 ; 1 ; СЧЁТЕСЛИ( $C:$C ; $G2 ) ; 1 ) – определяет адрес ячеек с названиями статей из группы с помощью ПОИСКПОЗ, которая ищет группы статей.
- $С$1 – это первая ячейка в столбце с группами.
- ПОИСКПОЗ ( $G2 ; $C:$C ; 0 ) – 1 Определяет, на сколько строк нужно отступить от первой ячейки.ПОИСКПОЗ ищет название группы, выбранной в таблице с данными (столбец $G) среди ячеек справочника (столбец $C). В адресе ячейки $G2 не «закрепляем» номер строки с помощью знака $, чтобы формула работала для каждой ячейки в столбце.
- Следующая цифра 1 – это отступ на 1 столбец вправо, т.е. переходим к столбцу «статьи», откуда нужно брать данные.
- СЧЁТЕСЛИ( $C:$C ; $G2 ) – считаем число ячеек в столбце $C, в которых названия групп такие же, как в столбце с данными. Здесь тоже не «закрепляем» номер строки у ячейки $G2 с помощью знака $.
- Последнее число 1 в формуле – это количество столбцов.
Шаг 4. Создайте выпадающие списки.
Выделите ячейки в столбце «группы», перейдите в меню Данные -> Проверка данных. Задайте тип данных Список, источник =ГруппыСписок.
То же самое – для статей. Тип данных – список, источник =ГруппыСтатьи
Выпадающие списки готовы. Форматированные smart-таблицы позволят «захватить» все данные, а сводные таблицы – избежать ошибок, отсортировать справочник и создать список групп.