Как сделать ссылку на название листа excel?

Ссылка на другой лист с помощью ДВССЫЛ

Задача: вам нужно получить значение ячейки B4 с одного из многих листов. При этом, определить, с какого именно листа вы можете на основании расчета. Может ли ДВССЫЛ ссылаться на другой лист?

Решение: ДВССЫЛ может ссылаться на другой лист. Но функция требует особого обращения, если имя листа содержит пробелы или дату. Если лист содержит пробел в имени, вы должны составить ссылку на лист, используя апострофы вокруг имени листа, затем восклицательный знак и адрес ячейки (см. также Сумма одной и той же ячейки на нескольких листах). Например, = ‘ Прибыли и убытки ‘ !В2. Если имя листа не содержит пробелы, вы можете обойтись без апострофов: =Доходы!В2. Если у вас смесь имен листов, некоторые из которых содержат пробелы, в формуле вы должны спланировать апострофы (рис. 1).

Рис. 1. ДВССЫЛ ссылается на переменный лист

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

Формула в ячейке F4: =ДВССЫЛ( » ‘ » &F$3& » ‘ ! » & » B4 » ). Первый частокол из апострофов – это открывающие кавычки » + апостроф ‘ + закрывающие кавычки » . Второй частокол – это открывающие кавычки » + два символа: апостроф и восклицательный знак ‘ ! + закрывающие кавычки » .

Проблема с формулами в четвертой строке в том, что они жестко ссылаются на В4, поэтому при копировании в строки с 5 по 7 они становятся не релевантными. Чтобы формулы могли ссылаться на данные из других строк, можно использовать функции ЯЧЕЙКА или АДРЕС. Вы можете приспособить функцию ЯЧЕЙКА в считанные секунды, но функция АДРЕС может, в конечном счете, оказаться более удобной, как только вы поймете нюансы ее использования.

Фрагмент формулы ЯЧЕЙКА( » адрес » ;$B5) возвращает текст $В$5, что удачно подходит для аргумента функции ДВССЫЛ (рис. 2). Знак доллара перед буквой В позаботится о том, чтобы формула на всех листах ссылалась на столбец В. Отсутствие знака доллара перед цифрой 5 позволит при копировании формулы вниз по столбцу ссылаться на строки 5, 6, 7… Формула в ячейке F5: =ДВССЫЛ( » ‘ » &F$3& » ‘ ! » &ЯЧЕЙКА( » адрес » ;$B5)).

Рис. 2. Добавление функции ЯЧЕЙКА позволяет скопировать формулу на всю таблицу

Вы можете использовать функцию АДРЕС вместо функции ЯЧЕЙКА. В своей простейшей форме –АДРЕС(номер_строки; номер_столбца) – функция возвращает адрес ячейки. Например, =АДРЕС(5, 2) возвращает текст $В$5. Может показаться странным писать =АДРЕС(СТРОКА(),2) вместо более простого и короткого ЯЧЕЙКА( » адрес » ;$B5), когда вы хотите сослаться на столбец B в текущей строке. Однако, функция АДРЕС имеет три дополнительных необязательных аргумента.

Примечание: третий и четвертый аргументы функции АДРЕС в этой теме вас не интересуют, но вы должны разобраться с ними, чтобы добраться до пятого аргумента.

Третий аргумент определяет, тип ссылки, т.е., какие ссылку будут абсолютными, а какие относительными (подробнее см. Относительные, абсолютные и смешанные ссылки на ячейки в Excel). Вот простой способ запомнить, как работает этот аргумент. Число в аргументе соответствует тому, сколько раз вы нажмите клавишу F4, чтобы добиться комбинации знаков доллара:

  • АДРЕС(5;2;1) – фиксирует, как столбец, так и строку, и возвращает $B$5;
  • АДРЕС(5;2;1) – фиксирует только строку, и возвращает B$5;
  • АДРЕС(5;2;1) – фиксирует только столбец, и возвращает $B5;
  • АДРЕС(5;2;1) – оставляет обе ссылки относительными, и возвращает B5.

Четвертый аргумент определяет стиль ссылки:

  • АДРЕС(5;2;1;1) – возвращает ссылку в стиле А1 – $В$5;
  • АДРЕС(5;2;1;0) – возвращает ссылку в стиле R1C1 – R5C2.

Пятый аргумент определяет имя листа. Excel сам проанализирует синтаксис имени, и определит, нужны ли апострофы:

  • =АДРЕС(5;2;4;1; » Atlanta » ) вернет Atlanta!B5;
  • =АДРЕС(5;2;4;1; » Eden Prairie » ) вернет ‘ Eden Prairie ‘ !B5

Примечание: на самом деле вы не обязаны помнить, какие параметры нужны для третьего и четвертого аргументов функции АДРЕС. Просто пропустите их (рис. 3). Например, формула =АДРЕС(5;2;;; » Eden Prairie » ) вернет значение ‘ Eden Prairie ‘ !$B$5.

Рис. 3. Аргументы функции АДРЕС

Функция АДРЕС с использованием пятого аргумента возвращает текст, который может быть использован в функции ДВССЫЛ (рис. 4). Формула в ячейке D6: =ДВССЫЛ(АДРЕС(СТРОКА();2;;;D$3)). Эта формула также может быть скопирована на всю таблицу. Первый аргумент в АДРЕС – СТРОКА() – гарантирует, что Excel извлекает значение из строки с тем же номером, что и формула. Второй аргумент фиксирован – это 2. Т.е., всегда получите столбец B. Третий и четвертый аргументы опущены, что говорит функции АДРЕС вернуть абсолютные ссылки в стиле А1. Пятый аргумент содержит знак доллара только перед строкой, что сохранит релевантность формулы при ее копировании вдоль столбца: при этом будет сохранятся ссылка на имя листа (из третьей строки). При копировании же вдоль строки ссылка будет меняется с переходом от столбца к столбцу (попробуйте в приложенном файле Excel).

Рис. 4. Альтернативный вариант с функцией АДРЕС

Дополнительные сведения: функция ДВССЫЛ может работать и со ссылками в стиле R1C1. Часто это упрощает создание формул. До сих пор мы во всех примерах функция ДВССЫЛ использовала только первый аргумент (второй аргумент был опущен), например, ДВССЫЛ( » В4 » ). Эта формула вернет такое же значение при использовании в качестве второго аргумента значения ИСТИНА: ДВССЫЛ( » В4 » ; ИСТИНА). Последняя формула явно предписывает функции ДВССЫЛ использовать стиль ссылок А1. Значение ЛОЖЬ в качестве второго аргумента – ДВССЫЛ( » В4 » ; ЛОЖЬ) – предписывает интерпретировать ссылки в стиле R1C1.

Читать еще:  Как сделать папку в excel?

Ссылка =RC указывает на текущую строку и текущий столбец. Числе после R или C создает абсолютную ссылку на определенную строку или столбец. Так, например, формула =RC2 ссылается на столбец B из того же ряда. Если вы используете ссылки в стиле R1C1, вам не понадобятся функции ЯЧЕЙКА или АДРЕС (рис. 5). Здесь в ячейке С7 формула =ДВССЫЛ( » ‘ » &C$3& » ‘ !RC2 » ;ЛОЖЬ). Эта формула также может быть скопирована по всей таблице. Обратите внимание, что вам не придется переключаться на использование на листе ссылок в стиле R1C1 для того, чтобы воспользоваться этой формулой.

Рис. 5. Стиль R1C1 не популярен, но он, безусловно, значительно облегчает написание формул

Как получить имя листа формулой

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

В принципе это очень легко сделать простейшей функцией пользователя:

‘————————————————————————————— ‘ Procedure : GetShName ‘ DateTime : 04.03.2015 10:44 ‘ Author : The_Prist(Щербаков Дмитрий) ‘ http://www.excel-vba.ru ‘ Purpose : Функция возвращает в ячейку имя листа ‘ rCell — Необязательный аргумент. ‘ Если указан — функция вернет имя листа, на котором расположена эта ячейка ‘ Если не указан — функция вернет имя листа, в котором записана функция ‘————————————————————————————— Function GetShName(Optional rCell As Range) If Not rCell Is Nothing Then GetShName = rCell.Parent.Name Else GetShName = Application.Caller.Parent.Name End If End Function

Синтаксис:
получение имени листа, в котором записана функция:
=GetShName()
получение имени листа, в котором расположена указанная ячейка
=GetShName( A1 ) — данная запись равнозначна записи без ячейки, т.к. ячейка все равно в пределах листа с самой функцией
=GetShName( Лист2!A1 )

Но бывают случаи, когда использование макросов весьма нежелательно. Тогда можно воспользоваться чуть более громоздкой и менее понятной формулой:
=ПСТР(ЯЧЕЙКА(«filename»; A2 );ПОИСК(«]»;ЯЧЕЙКА(«filename»; A2 ))+1;31)
=MID(CELL(«filename»,A2),SEARCH(«]»,CELL(«filename»,A2))+1,31)
Однако эта формула вернет точно такой же результат, как функция пользователя выше и макросы совершенно не нужны.

Теперь разберем эту формулу поподробнее
Самая основная часть — ЯЧЕЙКА(«filename»;A2). Функция ЯЧЕЙКА (CELL) с записанным первым аргументом «filename» возвращает полный путь к книге, включая имя листа и адрес ячейки, в которой записана функция:
C:UsersДмитрийDesktop[Tips_All_GetShName.xls]Лист1
Т.к. нам нужно только имя листа — мы применяем ПСТР (MID) , которая возвращает часть текста, начиная с указанной позиции символа. ПОИСК (SEARCH) ищет нам именно эту позицию — позицию символа «]».
Если по шагам просмотреть этапы работы формулы, то будет нечто вроде:
=ПСТР(ЯЧЕЙКА(«filename»; A2 );ПОИСК(«]»;ЯЧЕЙКА(«filename»; A2 ))+1;31)
Шаг1 =>
=ПСТР(ЯЧЕЙКА(«filename»; A2 );ПОИСК(«]»;C:UsersДмитрийDesktop[Tips_All_GetShName.xls]Лист1)+1;31)
Шаг2 =>
=ПСТР(ЯЧЕЙКА(«filename»; A2 );49+1;31)
Шаг3 =>
=ПСТР(C:UsersДмитрийDesktop[Tips_All_GetShName.xls]Лист1;50;31)
Шаг4 =>
=Лист1
Первый момент: почему применяю цифру 31 последним аргументом ПСТР? По факту, там необходимо указывать точное количество символов, но если указать больше — то будут взяты все символы от указанного и до последнего. Т.е можно было бы указать и 99, но 31 — это максимальное количество символов, которое можно использовать в имени листа.
Второй момент: первым аргументом функции ЯЧЕЙКА указывается текст, обозначающий тип сведений. В русской локализации он доступен на русском — «имяфайла». Однако при открытии файла с этой функцией в другой локализации тип сведений не будет переведен и функция не сможет работать. Поэтому я указываю на английском, т.к. он является универсальным в данном случае и будет работать в любой локализации. Однако нет никакой ошибки, если указать на русском: ЯЧЕЙКА(«имяфайла»; A2 )

Если вторым аргументом функции ЯЧЕЙКА ничего не указывать( =ЯЧЕЙКА(«filename») ), то функция вернет полный путь с именем того листа, который активен в данный момент(даже если это лист другой книги).

Правда, у этой формулы есть свои недостатки: обязательно необходимо, чтобы книга была сохранена на диске. Это означает, что формула не сработает для книги, которая была только что создана и не сохранена. Связано это с ограничениями возможностей параметра «filename» функции ЯЧЕЙКА(CELL). Она не может получить путь к файлу, который еще не сохранен.
Функция пользователя(UDF) GetShName (приведенная в самом начале статьи) лишена этого недостатка.

Для чего вообще может быть нужно записывать имя листа в ячейку? Ну, например, если имя листа периодически меняется, а в своих формулах вы используете функции вроде ДВССЫЛ со ссылкой на этот лист. Либо для создания более наглядного оглавления через гиперссылки.

Кто-то уже явно догадался, что подобным же образом можно получить не только имя листа — но и имя книги:
=ПСТР(ЯЧЕЙКА(«filename»);ПОИСК(«[«;ЯЧЕЙКА(«filename»))+1;ПОИСК(«]»;ЯЧЕЙКА(«filename»))-ПОИСК(«[«;ЯЧЕЙКА(«filename»))-1)
так же как и для имени листа — можно указать ячейку из другой книги и тогда формула вернет имя той книги, из которой указана ячейка.
Если ячейка не указана — функция вернет имя активной в данный момент книги.

Так же можно получить полный путь к книге и имя книги(без квадратных скобок и имени листа):
=ПОДСТАВИТЬ(ПСТР(ЯЧЕЙКА(«filename»;A1);1;ПОИСК(«]»;ЯЧЕЙКА(«filename»;A1))-1);»[«;»»)

Статья помогла? Поделись ссылкой с друзьями!

Excel At Excel вып.3: Собираем данные с разных листов

Дано: 22 таблицы унифицированного формата с перечнем помещений от 22 дочерних предприятий.

Задача: сделать сводную таблицу с данными всех 22 таблиц

Итак, решение. Есть три варианта решения данной задачи. Первый — использовать встроенную (начиная с excel 2013) надстройку PowerPivot (об этом методе мы поговорим позднее). Второй — посредством сводной таблицы через несколько диапазонов консолидации. Не люблю этот метод, т.к. такая сводная таблица имеет существенно более ограниченный функционал по сравнению с простой сводной таблицей. Наконец, третий вариант — это создать общую таблицу с использованием функции INDIRECT (ДВССЫЛ). Этому методу и посвятим сегодня наш пост.

Что мы имеем? 22 одинаковых по формату таблицы на отдельных листах и с разным количеством строк в каждой. Соответственно, для построения общей таблицы нам надо решить следующие «проблемы»:

Читать еще:  Как сделать сумму произведений в excel?

1) как заставить общую таблицу «переключаться» с одного листа данных на другой?;

2) как заставить ее делать это в нужный момент (когда закончились строки на одном листе)?

Начнем со второго вопроса, т.к. ответ на него мы уже знаем. Это циклы, о которых мы подробно говорили в выпуске 2 «Циклы в Excel без VBA». Для решения проблемы достаточно в наш файл добавить лист с перечнем всех обществ, соответствующими названиями листов и количеством подсчетом количества строк на каждом таком листе.

Обратите внимание на формулу в столбце Кол-во записей. Мы могли бы использовать просто COUNTA (СЧЁТА) со ссылкой на каждый лист. Но это потребует времени для «линковки» каждого листа. Плюс мы с вами готовим универсальные решения, которые будут работать в независимости от количества листов.

Именно для этого в функцию COUNTA (СЧЁТА) и внедряется эта чуднАя функция INDIRECT (ДВССЫЛ). Остановимся на ней подробнее.

Функция имеет, по сути, единственный параметр — ref_text (ссылка_на_текст). Что делает эта функция? Всего-навсего преобразует текст в ссылку на ячейку. То есть она преобразует текст, например, «А1» в ссылку и возвращает значение ячейки А1.

Соответственно, зная несложные правила работы с текстом в Excel, мы можем легко сделать текст внутри изменяемым, а значит можем сделать и изменяемыми ссылки, которые будет возвращать функция INDIRECT (ДВССЫЛ).

Разберем пример выше. Функция INDIRECT (ДВССЫЛ) имеет следующий вид:

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

Соответственно, в нашем случае у нас неизменен столбец B:B, а вот название листа меняется. Для «автоматизации» формулы заменяем Название листа на ссылку на название листа с данными по соответствующему обществу (столбец Название листа). Получаем следующее:

где все, что подчеркнуто — текст, а выделено жирным — ссылки.

ВАЖНО! Обратите внимание на кавычки и конкатенацию («склеивание») при помощи амперсента. Не забудьте, что текст вносится в кавычках и соединяется со ссылками при помощи символа &.

Получается, что INDIRECT (ДВССЫЛ) получает название листа из ячеек в столбце А:А (Название листа), а диапазон у нас прописан фиксированно текстом (В:В). COUNTA (СЧЁТА) же просто считает количество строк в столбце В:В на соответствующем листа за вычетом заголовка.

Перейдем к формированию общей таблицы. Как вы уже наверное прикинули, у нас будет два вложенных цикла: один — количество обществ, второй — количество записей на листе данных по соответствующему обществу. Соответственно, нам потребуются два вспомогательных столбца (определим их в столбцы А и В). Ровно так же, как мы делали на примере в выпуске 2 «Циклы в Excel без VBA», пишем формулу первого цикла:

=IF(A2=»»;»»;IF(COUNTIF($A$2:A2;A2)=OFFSET(‘Список обществ’!$E$2;A2-1;0);IF(A2+1>COUNTA(‘Список обществ’!A:A)-1;»»;A2+1);A2))

Затем пишем формулу второго цикла:

Далее при помощи уже знакомой нам функции OFFSET (СМЕЩ) заполняем столбцы из таблицы на листе Список обществ.

Осталось подтянуть данные с 22 листов по обществам. Тут нам опять поможет OFFSET (СМЕЩ), но уже в паре с INDIRECT (ДВССЫЛ).

OFFSET (СМЕЩ) передает в формулу название листа, а конструкция B2+1 — номер строки в столбце Е на том листе.

ВАЖНО! Обратите внимание, что OFFSET (СМЕЩ) вкладывается внутрь INDIRECT (ДВССЫЛ), а не наоборот.

Название листа из ячейки excel

Разберем несколько вариантов добавления имени листа в ячейку в Excel с помощью формул.

Формула имени листа в Excel

Чтобы присвоить ячейке имя листа в Excel можно воспользоваться следующей формулой:

=ПСТР(ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 );ПОИСК(«]»;ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 ))+1;255)

Давайте по шагам разберем принцип действия формулы имени листа.

Шаг 1. Функция ЯЧЕЙКА

Функция ЯЧЕЙКА позволяет получить данные о содержимом ссылки, в том числе и имя файла.
В данном случае формула ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 ) позволяет получить полный путь файла Excel на локальном диске:


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

Шаг 2. Функция ПОИСК

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


Прибавляя к результату 1, мы получаем позицию с которой начинается имя листа.

Шаг 3. Функция ПСТР

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


Так как точное количество символов в имени листа неизвестно, то в качестве последнего аргумента функции ПСТР указываем заведомо большее число, чем длина имени листа (подойдет любое число больше 31 — максимальная длина названия листа).

Альтернативная формула

Чтобы вставить название листа в ячейку можно воспользоваться альтернативной формулой:

=ПРАВСИМВ(ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 );ДЛСТР(ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 ))-ПОИСК(«]»;ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 )))

Отличие от предыдущего варианта заключается в использовании функции ПРАВСИМВ, которая возвращает указанное количество знаков с конца текста.

Описание используемых функций

Функция ЯЧЕЙКА:

ЯЧЕЙКА(тип_сведений; [ссылка])
Возвращает сведения о форматировании, адресе или содержимом первой ячейки ссылки.

  • Тип сведений(обязательный аргумент) — текстовое значение, задающее тип сведений о ячейке (например, адрес, столбец, цвет, имяфайла, формат, скобки и т.д.);
  • Ссылка(необязательный аргумент) — ячейка, по которой возвращаются данные.

Функция ПОИСК:

ПОИСК(искомый_текст; просматриваемый_текст; [начальная_позиция])
Возвращает позицию первого вхождения знака или строки текста (при чтении слева направо, прописные и строчные буквы не различаются).

  • Искомый текст(обязательный аргумент) — искомый текст
  • Просматриваемый текст(обязательный аргумент) — текст, по которому производится поиск;
  • Начальная позиция(необязательный аргумент) — номер знака в просматриваемом тексте, с которого следует начать поиск.

Функция ПСТР:

ПСТР(текст; начальная_позиция; число_знаков)
Возвращает заданное число знаков из строки текста, начиная с указанной позиции.

Читать еще:  Как в excel сделать поиск одинаковых значений в столбцах?

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

В принципе это очень легко сделать простейшей функцией пользователя:

‘————————————————————————————— ‘ Procedure : GetShName ‘ DateTime : 04.03.2015 10:44 ‘ Author : The_Prist(Щербаков Дмитрий) ‘ http://www.excel-vba.ru ‘ Purpose : Функция возвращает в ячейку имя листа ‘ rCell — Необязательный аргумент. ‘ Если указан — функция вернет имя листа, на котором расположена эта ячейка ‘ Если не указан — функция вернет имя листа, в котором записана функция ‘————————————————————————————— Function GetShName(Optional rCell As Range) If Not rCell Is Nothing Then GetShName = rCell.Parent.Name Else GetShName = Application.Caller.Parent.Name End If End Function

Синтаксис:
получение имени листа, в котором записана функция:
=GetShName()
получение имени листа, в котором расположена указанная ячейка
=GetShName( A1 ) — данная запись равнозначна записи без ячейки, т.к. ячейка все равно в пределах листа с самой функцией
=GetShName( Лист2!A1 )

Но бывают случаи, когда использование макросов весьма нежелательно. Тогда можно воспользоваться чуть более громоздкой и менее понятной формулой:
=ПСТР(ЯЧЕЙКА(«filename»; A2 );ПОИСК(«]»;ЯЧЕЙКА(«filename»; A2 ))+1;31)
=MID(CELL(«filename»,A2),SEARCH(«]»,CELL(«filename»,A2))+1,31)
Однако эта формула вернет точно такой же результат, как функция пользователя выше и макросы совершенно не нужны.

Теперь разберем эту формулу поподробнее
Самая основная часть — ЯЧЕЙКА(«filename»;A2). Функция ЯЧЕЙКА (CELL) с записанным первым аргументом «filename» возвращает полный путь к книге, включая имя листа и адрес ячейки, в которой записана функция:
C:UsersДмитрийDesktop[Tips_All_GetShName.xls]Лист1
Т.к. нам нужно только имя листа — мы применяем ПСТР (MID) , которая возвращает часть текста, начиная с указанной позиции символа. ПОИСК (SEARCH) ищет нам именно эту позицию — позицию символа «]».
Если по шагам просмотреть этапы работы формулы, то будет нечто вроде:
=ПСТР(ЯЧЕЙКА(«filename»; A2 );ПОИСК(«]»;ЯЧЕЙКА(«filename»; A2 ))+1;31)
Шаг1 =>
=ПСТР(ЯЧЕЙКА(«filename»; A2 );ПОИСК(«]»;C:UsersДмитрийDesktop[Tips_All_GetShName.xls]Лист1)+1;31)
Шаг2 =>
=ПСТР(ЯЧЕЙКА(«filename»; A2 );49+1;31)
Шаг3 =>
=ПСТР(C:UsersДмитрийDesktop[Tips_All_GetShName.xls]Лист1;50;31)
Шаг4 =>
=Лист1
Первый момент: почему применяю цифру 31 последним аргументом ПСТР? По факту, там необходимо указывать точное количество символов, но если указать больше — то будут взяты все символы от указанного и до последнего. Т.е можно было бы указать и 99, но 31 — это максимальное количество символов, которое можно использовать в имени листа.
Второй момент: первым аргументом функции ЯЧЕЙКА указывается текст, обозначающий тип сведений. В русской локализации он доступен на русском — «имяфайла». Однако при открытии файла с этой функцией в другой локализации тип сведений не будет переведен и функция не сможет работать. Поэтому я указываю на английском, т.к. он является универсальным в данном случае и будет работать в любой локализации. Однако нет никакой ошибки, если указать на русском: ЯЧЕЙКА(«имяфайла»; A2 )

Если вторым аргументом функции ЯЧЕЙКА ничего не указывать( =ЯЧЕЙКА(«filename») ), то функция вернет полный путь с именем того листа, который активен в данный момент(даже если это лист другой книги).

Правда, у этой формулы есть свои недостатки: обязательно необходимо, чтобы книга была сохранена на диске. Это означает, что формула не сработает для книги, которая была только что создана и не сохранена. Связано это с ограничениями возможностей параметра «filename» функции ЯЧЕЙКА(CELL). Она не может получить путь к файлу, который еще не сохранен.
Функция пользователя(UDF) GetShName (приведенная в самом начале статьи) лишена этого недостатка.

Для чего вообще может быть нужно записывать имя листа в ячейку? Ну, например, если имя листа периодически меняется, а в своих формулах вы используете функции вроде ДВССЫЛ со ссылкой на этот лист. Либо для создания более наглядного оглавления через гиперссылки.

Кто-то уже явно догадался, что подобным же образом можно получить не только имя листа — но и имя книги:
=ПСТР(ЯЧЕЙКА(«filename»);ПОИСК(«[«;ЯЧЕЙКА(«filename»))+1;ПОИСК(«]»;ЯЧЕЙКА(«filename»))-ПОИСК(«[«;ЯЧЕЙКА(«filename»))-1)
так же как и для имени листа — можно указать ячейку из другой книги и тогда формула вернет имя той книги, из которой указана ячейка.
Если ячейка не указана — функция вернет имя активной в данный момент книги.

Так же можно получить полный путь к книге и имя книги(без квадратных скобок и имени листа):
=ПОДСТАВИТЬ(ПСТР(ЯЧЕЙКА(«filename»;A1);1;ПОИСК(«]»;ЯЧЕЙКА(«filename»;A1))-1);»[«;»»)

Статья помогла? Поделись ссылкой с друзьями!

Определим имя листа с помощью функции ЯЧЕЙКА() .

Имя листа можно определить с помощью функции ЯЧЕЙКА() , записав формулу (см. файл примера ):
=ПРАВСИМВ(ЯЧЕЙКА(«имяфайла»);ДЛСТР(ЯЧЕЙКА(«имяфайла»))-ПОИСК(«]»;ЯЧЕЙКА(«имяфайла»)))

Если формула вводится в новую книгу, то ее сначала нужно сохранить. После сохранения, возможно, потребуется нажать клавишу F9 (Вкладка Формулы, Группа Вычисление, Пересчет).

Формула вернет имя листа, содержащего ячейку с вышеуказанной формулой. Если требуется определить имя другого листа, то можно использовать туже функцию ЯЧЕЙКА() , но с аргументом «адрес».

Для этого нужно, чтобы второй аргумент содержал ссылку на ячейку другого листа, имя которого и будет определено. Если формула =ЯЧЕЙКА(«адрес»;лист2!A1) находится на листе1 в ячейке B1, то имя листа (Лист2) можно определить по формуле:

В этом случае имя листа не должно состоять только из цифр, т.к. если в качестве названия листа использовано число, то функция ЯЧЕЙКА() возвращает название книги и листа в апострофах (‘) и формула вернет неправильный результат. Справиться с этим поможет формула =ПОДСТАВИТЬ(C1;»’»;»») , которая удалит символ апострофа.

Также предполагается, что имя файла не содержит символа закрывающая квадратная скобка ( ] ).

ВНИМАНИЕ !
Иногда, когда открыто несколько книг, функция ЯЧЕЙКА() может работать некорректно. Для восстановления работоспособности формулы нужно нажать клавишу F9 ( Формулы/ Вычисления/ Пересчет ).

ПРИМЕНЕНИЕ:
При изменении имени листа, все ссылки в формулах автоматически обновятся и будут продолжать работать. Исключение составляет функция ДВССЫЛ() , в которой имя листа может фигурировать в текстовой форме ДВССЫЛ(«Лист1!A1») . В статье Определение имени листа для использования в функции ДВССЫЛ() показано как использовать функцию ЯЧЕЙКА() , чтобы сохранить работоспособность формулы с функцией ДВССЫЛ() .

Ссылка на основную публикацию
Adblock
detector