Глава 4. Структурированные ссылки в таблицах Excel

Это продолжение перевода книги Зак Барресс и Кевин Джонс. Таблицы Excel: Полное руководство для создания, использования и автоматизации списков и таблиц (Excel Tables: A Complete Guide for Creating, Using and Automating Lists and Tables by Zack Barresse and Kevin Jones. Published by: Holy Macro! Books. First printing: July 2014. – 161 p.). В этой главе рассматриваются ссылки на таблицы в формулах, как внутренние (внутри таблицы), так и внешние (вне таблицы).

Предыдущая глава        Содержание    Следующая глава

Структурированные ссылки особенно удобны, если используются говорящие имена таблиц и столбцов. Если таблица называется "Таблица1", а столбцы – "Столбец1", "Столбец2" и т.д., то структурированная ссылка будет не лучше, чем традиционная ссылка A1.

Понимание того, как работают структурированные ссылки, начинается с понимания их синтаксиса:

Ris. 4.1. Sintaksis strukturirovannoj ssylki

Рис. 4.1. Синтаксис структурированной ссылки

Скачать заметку в формате Word или pdf, примеры в формате Excel

  1. Одна структурированная ссылка на диапазон ячеек.
  2. Имя таблицы. Если структурированная ссылка находится в ячейке внутри таблицы, то имя таблицы не требуется. Если вы не вводите имя таблицы при указании нескольких столбцов, Excel автоматически добавляет его при вводе структурированной ссылки. Имя таблицы ссылается на весь диапазон тела данных, исключая заголовки и итоги.
  3. Ссылка на таблицу определяет диапазон в таблице путем указания имени столбца (имен столбцов) и, при необходимости, специального идентификатора, который изменяет ссылку на конкретную ячейку столбца.
  4. Специальный идентификатор изменяет ссылку со всего столбца на предопределенную область таблицы:

[#Все] относится ко всему столбцу, включая заголовок и итоги, если они включены.

[#Заголовки] ссылается на ячейку заголовка, если он включен.

[#Данные] относится к диапазону тела данных, исключая заголовок и итоги; этот идентификатор может быть опущен.

[#Итоги] относится к строке итоги, если она включена.

[#Эта строка] относится к той же строке, в которую введена структурированная ссылка. Начиная с Excel 2010 вместо него используется символ @.

  1. Имя столбца.

Неявные пересечения

Неявное пересечение имеет место, когда формула в ячейке ссылается на столбец таблицы целиком, а значение вычисляется на основе той же строки этого столбца (рис. 4.2). При неявном пересечении Excel разрешает структурированную ссылку на одну ячейку в столбце ссылок, которая находится в той же строке, что и ячейка, содержащая ссылку (J7). Excel не разрешает структурированную ссылку на иную ячейку в столбце ссылок (обычная ссылка, естественно, возможна). Например, нельзя сослаться на ячейки J8 или J6. Excel также не разрешает ссылку, если ссылка передается в функцию, которая ожидает массив ячеек. Преимущество неявных пересечений заключается в том, что одна и та же формула используется в нескольких ячейках. В нашем примере в диапазоне L5:L10 все формулы идентичны.

Ris. 4.2. Primer neyavnogo peresecheniya

Рис. 4.2. Пример неявного пересечения

Преимущество структурированных ссылок

Помимо использования неявных пересечений, структурированные ссылки имеют явное преимущество в том, что их легче читать. До появления структурированных ссылок пользователи Excel полагались на именованные диапазоны, чтобы облегчить чтение и понимание формул. Таблицы Excel поощряют использование имен, а не стандарта А1. Например:

=A2-B2

Ячейки A2 и B2 не говорят вам, к чему на самом деле относится формула, и вам нужно посмотреть на эти ячейки, чтобы понять назначение формулы. Когда структурированные ссылки используются с говорящими именами таблиц и столбцов, текст формул говорит сам за себя, и не требует изучения содержимого ячеек, на которые ссылается формула. Например:

=[@Доходы]-[@Расходы]

При использовании структурированной ссылки, если имя столбца таблицы содержит ручные разрывы строк (ALT+ENTER) и другие специальные символы, необходимо включить эти специальные символы в структурированную ссылку.

Создание формул

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

Ris. 4.3. Obychnaya ssylka tak kak yachejka nahoditsya na odnu stroku nizhe

Рис. 4.3. Ссылка на ячейку таблицы, которая не может быть представлена в виде структурированной ссылки

Если же ссылка на ячейку находится в той же строке, что и ячейка, в которую вводится формула, Excel создает структурированную ссылку:

Ris. 4.4. Ssylka na yachejku tablitsy kotoraya mozhet byt predstavlena v vide strukturirovannoj ssylki

Рис. 4.4. Ссылка на ячейку таблицы, которая может быть представлена в виде структурированной ссылки

При вводе формулы с несколькими выделенными ячейками Excel вставляет стандартные ссылки вместо структурированных ссылок. Обходной путь состоит в том, чтобы ввести формулу с выделенной только одной ячейкой.

Если в вычисляемом столбце используется функция ПРОМЕЖУТОЧНЫЕ.ИТОГИ, то при каждой фильтрации таблицы дополнительные строки исключаются из фильтра без каких-либо причин, даже если они включены в критерии фильтрации. Это подтвержденная ошибка в Excel 2013. Обходной путь состоит в том, чтобы не использовать функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ в вычисляемом столбце. (В Excel 2019 ошибка исправлена.)

Ссылки на заголовок столбца

Сослаться на заголовок можно с помощью специального идентификатора [#Заголовки]. Например, эта ссылка на ячейку заголовка столбца Категория:

=tblRegister[[#Заголовки];[Категория]]

Когда вы ссылаетесь на строку заголовка в формулах, строка заголовка должна быть включена. Иначе формула вернет ошибку #ССЫЛКА! На первый взгляд это может показаться неочевидным, поскольку таблица всегда имеет заголовки, даже если строка заголовка отключена. Но когда строка заголовка отключена, нет никакого диапазона для ссылки. Так что Excel ведет себя логично.

Ссылка на итоги

Сослаться на итоги можно с помощью специального идентификатора [#Итоги]:

=tblRegister[[#Итоги];[Категория]]

Когда вы ссылаетесь в формуле на итоги, строка итогов должна быть включена. Иначе формула вернет ошибку #ССЫЛКА!

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

Вы не можете использовать проверку данных в строке итоги.

Excel показывает список встроенных функций, если выбрать ячейку строки итогов и нажать кнопку раскрывающегося меню. Эти встроенные функции используют функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ. При выборе одной из этих функций агрегирования Excel помещает функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ в ячейку итоговой строки с соответствующими параметрами. Стандартно доступно 8 функций агрегирования:

Ris. 4.5. Funktsii agregirovaniya dostupnye po umolchaniyu

Рис. 4.5. Функции агрегирования, доступные по умолчанию

Если вам нужна иная функция, кликните в окне на строку Другие функции… и вы получите доступ к стандартному окну Excel Вставка функции.

Ris. 4.6. Mozhno ispolzovat dlya agregirovaniya lyubuyu funktsiyu Excel

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

Функция ПРОМЕЖУТОЧНЫЕ.ИТОГИ не является специфичной для таблиц, но поскольку именно она используется по умолчанию, мы добавили краткое ее описание.

ПРОМЕЖУТОЧНЫЕ.ИТОГИ(номер_функции;ссылка1;[ссылка2];…])

номер_функции – число в диапазоне от 1 до 9 или от 101 до 109. При использовании от 1 до 9 функция игнорирует отфильтрованные строки, но не скрытые вручную. При использовании от 101 до 109 функция игнорирует отфильтрованные и скрытые вручную строки.

ссылка1 – обязательный параметр, диапазон или ссылка, которую вы хотите подытожить.

ссылка2 – необязательный параметр, диапазон или ссылка для промежуточного итога. Вы можете добавить до 254 дополнительных ссылок.

Кроме того:

  • Другие функции ПРОМЕЖУТОЧНЫЕ.ИТОГИ в вычисляемом диапазоне (диапазонах) игнорируются, чтобы избежать двойного агрегирования.
  • Диапазоны не обязаны быть одинаковыми по размеру.
  • Вы не обязаны ссылаться на один столбец.

Ссылка на столбец

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

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

tblRegister[[Описание]:[Категория]]

Такая ссылка используется для целых столбцов области данных. Чтобы ограничить ссылку только строкой, вы используете символ @ перед первой ссылкой:

tblRegister[@[Описание]:[Категория]]

Как правило добавление @ не обязательно, так как работает неявное пересечение.

При протягивании формул по столбцам Excel обрабатывает структурированные ссылки как относительные ссылки и перемещает их по столбцам. Однако он не рассматривает ссылки на несколько столбцов как относительные ссылки; он рассматривает их как абсолютные ссылки. Таким образом, чтобы предотвратить смещение одноколоночных ссылок в Excel, можно создать одноколоночную структурированную ссылку, как если бы она была многоколоночной:

tblRegister[[Категория]:[Категория]]

Подробнее абсолютные структурированные ссылки будут рассмотрены позже в этой заметке.

Специальный идентификатор [#Эта строка] или @

В Excel 2007 для ограничения ссылки столбца на строку, в которой находится ссылка, перед этой ссылкой на столбец ставится [#Эта строка]:

tblRegister[[#Эта строка];[Описание]]

Начиная с Excel 2010 вместо [#Эта строка] используется знак @. Идентификатор [#Эта строка] при вводе формулы автоматически заменяется на @. Например,

=Web_Table[[#Эта строка];[Total]]

…превращается в…

=Web_Table[@Total]

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

Использование автозаполнения

Автозаполнение – это полезная функция, которая упрощает ввод формулы. Когда вы вводите текст в строке формул, Excel представляет всплывающий список возможных объектов или функций, которые вы можете использовать. Из этого всплывающего списка можно выбрать объект или функцию, чтобы вставить их в формулу. Если вы используете клавиатуру, а не мышь для ввода формулы, вы можете использовать клавиши со стрелками для выбора нужного объекта или функции, а затем нажать клавишу TAB, чтобы ввести выбранный элемент в формулу.

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

Ris. 4.7. Avtozapolnenie dlya strukturirovannyh ssylok

Рис. 4.7. Автозаполнение для структурированных ссылок

Использование абсолютных структурированных ссылок

Абсолютные и относительные ссылки – это понятия, описывающие, как Excel изменяет ссылки на ячейки при перемещении формулы в другое место на листе. При абсолютной ссылке целевая ячейка не изменяется при перемещении формулы. При относительной ссылке цель перемещается точно так же, как перемещается формула. Например, при традиционной ссылке A1 размещение знака доллара ($) перед буквой столбца и номером строки устанавливает эту ссылку в качестве абсолютной – $A$1. Независимо от того, куда перемещается формула, ссылка всегда будет ссылаться на A1. Ссылка может быть смешанной. В этом случае знак $ стоит только перед буквой столбца, или только перед числом строки.

Структурированные ссылки являются относительными. Что касается строк, то структурированные ссылки — и таблицы в целом — не поддерживают понятие конкретных строк. Так что при протаскивании вдоль столбца корректность формулы сохраняется.

Вы можете перемещать или копировать формулы из одного столбца в другой несколькими способами:

  • Копирование / вставка – структурированные ссылки не изменяются при перемещении в другие столбцы.
  • Протаскивание формулы – структурированные ссылки изменяются, когда они перемещаются в другие столбцы.
  • Формулы массива – структурированные ссылки не изменяются при перемещении в другие столбцы.

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

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

Таблица1[[Столбец1]:[Столбец1]]

Такая запись эквивалентна традиционной ссылке $A1. В отличие от стандартных ссылок на ячейки, вы не можете переключать абсолютный/относительный синтаксис с помощью клавиши F4.

В следующем примере показана работа абсолютных ссылок. Исходная таблица "tblData":

Ris. 4.8. Ishodnaya tablitsa

Рис. 4.8. Исходная таблица

Вы хотите суммировать все Units по кварталам, регионам и цветам, используя следующий макет в таблице "tblSum":

Ris. 4.9. Maket obobshhayushhej tablitsy

Рис. 4.9. Макет обобщающей таблицы

В ячейке В2 вы хотите прописать формулу, которую можно скопировать на все ячейки таблицы. Напомним, что копирование вдоль столбца поддерживается стандартным функционалом Таблиц. А вот для копирования из столбца в столбец воспользуйтесь следующей формулой:

=СУММЕСЛИ(tblData[[Color]:[Color]];tblSum[[Color]:[Color]];tblData[Q1 Units])

Здесь:

tblData[[Color]:[Color]] – это диапазон для сравнения с критерием. Поскольку это ссылка на несколько столбцов (даже если имеется ссылка только на один столбец), она не будет смещаться при копировании формулы из столбца в столбец. Поскольку функция СУММЕСЛИ ожидает диапазон для этого параметра, используется весь столбец.

tblSum[[Color]:[Color]] – это ячейки, содержащие критерии, используемые для сравнения с первым диапазоном. Это ссылка на несколько столбцов и не будет смещаться. Поскольку функция ожидает одно значение для этого параметра, используется только значение ячейки в той же строке, которая содержит формулу.

tblData[Q1 Units] – это диапазон для суммирования, если критерии удовлетворяются в этой строке. Это ссылка на один столбец, и поэтому она будет смещаться по мере копирования формулы.

Помещая формулу в ячейку B2 таблицы "tblSum" и используя маркер заполнения для копирования ее в другие три столбца, вы получите следующие формулы:

=СУММЕСЛИ(tblData[[Color]:[Color]];tblSum[[Color]:[Color]];tblData[Q1 Units])

=СУММЕСЛИ(tblData[[Color]:[Color]];tblSum[[Color]:[Color]];tblData[Q2 Units])

=СУММЕСЛИ(tblData[[Color]:[Color]];tblSum[[Color]:[Color]];tblData[Q3 Units])

=СУММЕСЛИ(tblData[[Color]:[Color]];tblSum[[Color]:[Color]];tblData[Q4 Units])

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

Ris. 4.10. Zapolnennaya obobshhayushhaya tablitsa

Рис. 4.10. Заполненная обобщающая таблица

Отключение структурированных ссылок

Чтобы отключить использование структурированных ссылок пройдите по меню Файл –> Параметры. Перейдите на вкладку Формулы и снимите галочку напротив опции Использовать имена таблиц в формулах.

Ris. 4.11. Otklyuchenie strukturirovannyh ssylok v okne Parametry Excel

Рис. 4.11. Отключение структурированных ссылок в окне Параметры Excel; чтобы увеличить изображение кликните на нем правой кнопкой мыши и выберите Открыть картинку в новой вкладке

Операторы структурированных ссылок

Операторы структурированных ссылок аналогичны операторам стандартных ссылок:

  • Двоеточие (:) – это оператор диапазона, который объединяет все, что находится между двумя ссылками и включает их.
  • Точка с запятой (;) – это оператор объединения, который соединяет все, что указано в двух ссылках.
  • Пробел ( ) – это оператор пересечения, который возвращает всё что находится на пересечении двух ссылок.

В следующей таблице приведены некоторые примеры использования операторов. Имя таблицы – "Table1", заголовок таблицы находится в строке 1, а диапазон тела данных начинается в строке 2 и заканчивается в строке 20. Столбцы расположены в следующем порядке: А – "OrderDate", В – "Region", С – "Rep", D – "Item", E – "Cost", F – "Units".

Ris. 4.12. Primery operatorov strukturirovannyh ssylok

Рис. 4.12. Примеры операторов структурированных ссылок

Специальные символы, используемые в структурированных ссылках

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

Ris. 4.13. Spetsialnye simvoly v imeni stolbtsa trebuyushhie dopolnitelnyh kvadratnyh skobok

Рис. 4.13. Специальные символы в имени столбца, требующие дополнительных квадратных скобок

Например, =Web_Table[@OrderDate], но =Web_Table[@[Order Date]]

Более того, некоторые символы имеют особое значение в структурированных ссылках, поэтому, если они используются в именах столбцов, требуют наличия escape-символа – апострофа ('):

  • левая квадратная скобка ([);
  • правая квадратная скобка (]);
  • решетка (#);
  • апостроф (').

Например, если имя столбца, Order [Date], то ссылка на него будет иметь вид

=Web_Table[@[Order '[Date']]]

Динамические ссылки

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

Шаг 1. Создайте новую таблицу и назовите ее "tblValues". Назовите один из столбцов "Value" и введите в него два или более уникальных значения.

Шаг 2. Выберите часть диапазона области данных столбца "Value". Если отображаются строки заголовка или итога, не выделяйте их; выберите только диапазон тела данных столбца.

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

Шаг 3. Пройдите по меню Формулы –> Диспетчер имен (или используйте сочетание клавиш Ctrl+F3), чтобы открыть диалоговое окно Диспетчер имен.

Ris. 4.14. Dialogovoe okno Dispetcher imen

Рис. 4.14. Диалоговое окно Диспетчер имен

Шаг 4. Нажмите кнопку Создать, чтобы открыть диалоговое окно Создание имени.

Ris. 4.15. Dialogovoe okno Sozdanie imeni

Рис. 4.15. Диалоговое окно Создание имени

Шаг 5. Введите "ValidValues" в текстовое поле Имя. Обратите внимание, что структурированная ссылка на столбец таблицы "Value" уже введена в поле Диапазон: =tblValues[Value]. Нажмите OK. Вы вернетесь в окно Диспетчер имен. Нажмите Закрыть.

Шаг 6. Выберите ячейку, к которой должен быть применен список проверки, и пройдите по меню Данные –> Работа с данными –> Проверка данных. Откроется окно Проверка вводимых значений (рис. 4.16). Выберите "Cписок" в поле Тип данных. Введите "=ValidValues" в поле Источник. Нажмите ОК.

Ris. 4.16. Okno Proverka vvodimyh znachenij

Рис. 4.16. Создание списка проверки с использованием именованной динамической ссылки

Список проверки, содержащий значения из столбца таблицы "Value", теперь находится в выбранной ячейке:

Ris. 4.17. Spisok proverki

Рис. 4.17. Список проверки

Использование текущего номера строки

Следующая формула отображает номер строки в таблице, где номер строки относится к первой строке таблицы, а не к номеру строки листа:

=СТРОКА()-СТРОКА(tblNumber[[#Заголовки];[Номер]])

Ris. 4.18. Formula nomera stroki Tablitsy

Рис. 4.18. Формула номера строки Таблицы

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

Нарастающий итог

Следующая формула отображает нарастающий итог другого столбца в той же таблице:

=СУММ(tblNumber[[#Заголовки];[Итого]]:[@Итого])

Ris. 4.19. Narastayushhij itog

Рис. 4.19. Нарастающий итог

Эта формула предполагает, что строка заголовка включена; функция СУММ игнорирует текстовое значение в заголовке. Если строка заголовка указанного столбца не включена, приведенная выше формула вернет ошибку #ССЫЛКА! Чтобы избежать этого, можно усовершенствовать формулу:

=СУММ(ИНДЕКС([Итого];1):[@Итого])

Ris. 4.20. Narastayushhij itog rabotayushhij pri otklyuchennyh imenah stolbtsov

Рис. 4.20. Нарастающий итог, работающий при отключенных именах столбцов

Этот пример можно реализовать с помощью стандартной ссылки =СУММ(D$2:D2). Вы используете абсолютную ссылку на строку, чтобы зафиксировать начало диапазона, в то время как вторая часть смещается по мере копирования формулы вниз по строкам. Однако такой подход даст сбой при добавлении новых строк в таблицу. Excel допускает ошибку, искажая ссылку в предпоследней строке (рис. 4.21). Корректная формула должна быть такой =СУММ($D$4:D10).

Ris. 4.21. Oshibka Excel

Рис. 4.21. Ошибка Excel

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

=СУММ(ИНДЕКС([Credit];1):[@Credit])-СУММ(ИНДЕКС([Debit];1):[@Debit])

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

Добавить комментарий

Ваш адрес email не будет опубликован.