вовсе нет, есть штатные средства
ЯЧЕЙКА
Возвращает информацию о форматировании, положении или содержимом левого верхнего угла в ссылке.
Синтаксис
ЯЧЕЙКА(тип_информации;ссылка)
Тип_информации — это текстовое значение, задающее требуемый тип информации о ячейке. Приведенный ниже список показывает возможные значения аргумента тип_информации и соответствующие результаты.
Тип_информации Возвращаемое значение
«адрес» Ссылка на первую ячейку в аргументе «ссылка» в виде текстовой строки.
«защита» 0, если ячейка разблокирована, и 1, если ячейка заблокирована.
«имяфайла» Имя файла (включая полный путь), который содержит ссылку, в виде текстовой строки. Если лист, содержащий ссылку, еще не был сохранен, возвращается пустая строка («»).
«префикс» Текстовое значение, соответствующее префиксу метки ячейки. Апостроф (‘) соответствует тексту, выровненному влево, кавычки («) — тексту, выровненному вправо, знак крышки (^) — тексту, выровненному по центру, обратная косая черта () — тексту с заполнением и пустой текст («») — любому другому содержимому ячейки.
«скобки» 1, если положительные или все числа отображаются в круглых скобках; во всех остальных случаях — 0 (ноль).
«содержимое» Значение левой верхней ячейки в ссылке; не формула.
«столбец» Номер столбца ячейки в аргументе «ссылка».
«строка» Номер строки ячейки в ссылке.
«тип» Текстовое значение, соответствующее типу данных в ячейке. Пустой ячейке соответствует «b», текстовой константе в ячейке соответствует «l» и «v» — любому другому значению в ячейке.
«формат» Текстовое значение, соответствующее числовому формату ячейки. Значения для различных форматов показаны в приведенной ниже таблице. Если ячейка изменяет цвет при выводе отрицательных значений, в конце текстового значения добавляется «-». Если положительные или все числа отображаются в круглых скобках, в конце текстового значения добавляется «()».
«цвет» 1, если ячейка изменяет цвет при выводе отрицательных значений; во всех остальных случаях — 0 (ноль).
«ширина» Ширина столбца ячейки, округленная до целого. Единица измерения равна ширине одного знака для шрифта стандартного размера.
Ссылка — это ячейка, информацию о которой необходимо получить. Если аргумент опущен, возвращается требуемая информация о последней измененной ячейке. Приведенный ниже список описывает текстовые значения, возвращаемые функцией ЯЧЕЙКА, если аргумент тип_информации равен «формат», а ячейка форматирована встроенным числовым форматом.
Формат Microsoft Excel Значение, возвращаемое функцией ЯЧЕЙКА
Общий «G»
0 «F0»
# ##0 «,0»
0,00 «F2»
# ##0,00 «,2»
$# ##0_);($# ##0) «C0»
$# ##0_);[Красный]($# ##0) «C0-»
$# ##0,00_);($# ##0,00) «C2»
$# ##0,00_);[Красный]($# ##0,00) «C2-»
0% «P0»
0,00% «P2»
0,00E+00 «S2»
# ?/? или # ??/?? «G»
д.м.гг, или ДД.ММ.ГГ ч:мм, или дд.мм.гг «D4»
Д МММ ГГ или ДД МММ ГГ «D1»
д.м, или дд.ммм, или Д МММ «D2»
ммм.гг, или ммм.гггг, или МММ ГГ, или МММ ГГГГ «D3»
дд.мм «D5»
ч:мм AM/PM «D7»
ч:мм:сс AM/PM «D6»
ч:мм «D9»
ч:мм:сс «D8»
Если аргумент тип_информации функции ЯЧЕЙКА равен «формат», а формат ячейки был изменен, необходимо пересчитать лист для обновления значения функции.
Заметки
Функция ЯЧЕЙКА обеспечивает совместимость с другими программами электронных таблиц.
Пример
Чтобы этот пример проще было понять, скопируйте его на пустой лист.
Инструкции
Создайте пустую книгу или лист.
Выделите пример в разделе справки. Не выделяйте заголовок строки или столбца.
Выделение примера в справке.
Нажмите сочетание клавиш CTRL+C
На листе выделите ячейку A1 и нажмите сочетание клавиш CTRL+V.
Чтобы переключиться между просмотром результатов и просмотром формул, возвращающих эти результаты, нажмите сочетание клавиш CTRL+` (апостроф) или в меню Сервис укажите на пункт Зависимости формул и выберите режим Режим проверки формул.
1
2
3
A
Данные
5 марта
ИТОГИ
Формула Описание (результат)
=ЯЧЕЙКА(«строка»;A20) Номер строки ячейки A20 (20)
=ЯЧЕЙКА(«формат»; A2) Код формата первой строки (D2, см. выше)
=ЯЧЕЙКА(«содержимое»; A3) Содержимое ячейки A3 (ИТОГИ)
Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Еще…Меньше
Предположим, что вы хотите добавить в табличный отчет сведения, подтверждающие расположение книги и листа, чтобы быстро находить и идентифицировать их. Эту задачу можно решить несколькими способами.
Вставка текущего имени файла, его полного пути и имени активного листа
Введите или вставьте следующую формулу в ячейку, в которой нужно отобразить текущее имя файла с полным путем и именем текущего листа.
=ЯЧЕЙКА(«filename»)
Вставка текущего имени файла и имени активного листа
Введите или вставьте следующую формулу в виде формула массива, чтобы отобразить текущее имя файла и имя активного листа.
=ПРАВСИМВ(ЯЧЕЙКА(«filename»);ДЛСТР(ЯЧЕЙКА(«filename»))- МАКС(ЕСЛИ(НЕ(ЕОШ(ПОИСК(«»;ЯЧЕЙКА(«filename»); СТРОКА(1:255))));ПОИСК(«»;ЯЧЕЙКА(«filename»);СТРОКА(1:255)))))
Примечания:
-
Чтобы ввести формулу в виде формулы массива, нажмите клавиши CTRL+SHIFT+ВВОД.
-
Формула возвращает имя листа, если он был сохранен хотя бы один раз. Если вы используете эту формулу на несохраненном листе, ячейка формулы останется пустой, пока вы не сохраните лист.
Вставка только текущего имени файла
Введите или вставьте следующую формулу, чтобы вставить имя текущего файла в ячейку.
=ПСТР(ЯЧЕЙКА(«filename»);ПОИСК(«[«;ЯЧЕЙКА(«filename»))+1; ПОИСК(«]»;ЯЧЕЙКА(«filename»))-ПОИСК(«[«;ЯЧЕЙКА(«filename»))-1)
Примечание: Если вы используете эту формулу на несохраненном листе, вы увидите сообщение об ошибке #ЗНАЧ! в ячейке. После сохранения листа ошибка заменяется именем файла.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Нужна дополнительная помощь?
Хитрости »
4 Март 2015 53380 просмотров
Как получить имя листа формулой
Задача: записать в отдельной ячейке или внутри формулы имя текущего листа(т.е. того, в котором сама функция).
В принципе это очень легко сделать простейшей функцией пользователя:
'--------------------------------------------------------------------------------------- ' 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»)), то функция вернет полный путь с именем того листа, который активен в данный момент(даже если это лист другой книги). Это всегда надо учитывать. Часто функцию используют для определения имени книги, в которой сама функция записана(например, для запросов Power Query — Относительный путь к данным PowerQuery). И в какой-то момент может получиться так, что ожидаете увидеть имя книги или листа с функцией, а получаете совсем другое.
Правда, у этой формулы есть свои недостатки: обязательно необходимо, чтобы книга была сохранена на диске. Это означает, что формула не сработает для книги, которая была только что создана и не сохранена. Связано это с ограничениями возможностей параметра «filename» функции ЯЧЕЙКА(CELL). Она не может получить путь к файлу, который еще не сохранен.
Функция пользователя(UDF) GetShName(приведенная в самом начале статьи) лишена этого недостатка.
Для чего вообще может быть нужно записывать имя листа в ячейку? Ну, например, если имя листа периодически меняется, а в своих формулах вы используете функции вроде ДВССЫЛ со ссылкой на этот лист. Либо для создания более наглядного оглавления через гиперссылки.
Кто-то уже явно догадался, что подобным же образом можно получить не только имя листа — но и имя книги:
=ПСТР(ЯЧЕЙКА(«filename»);ПОИСК(«[«;ЯЧЕЙКА(«filename»))+1;ПОИСК(«]»;ЯЧЕЙКА(«filename»))-ПОИСК(«[«;ЯЧЕЙКА(«filename»))-1)
так же как и для имени листа — можно указать ячейку из другой книги и тогда формула вернет имя той книги, из которой указана ячейка.
Если ячейка не указана — функция вернет имя активной в данный момент книги.
Так же можно получить полный путь к книге и имя книги(без квадратных скобок и имени листа):
=ПОДСТАВИТЬ(ПСТР(ЯЧЕЙКА(«filename»;A1);1;ПОИСК(«]»;ЯЧЕЙКА(«filename»;A1))-1);»[«;»»)
Так же см.:
Имя предыдущего листа
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Определим имя листа с помощью функции
ЯЧЕЙКА()
.
Имя листа можно определить с помощью функции
ЯЧЕЙКА()
, записав формулу (см.
файл примера
):
=ПРАВСИМВ(ЯЧЕЙКА(«имяфайла»);ДЛСТР(ЯЧЕЙКА(«имяфайла»))-ПОИСК(«]»;ЯЧЕЙКА(«имяфайла»)))
Если формула вводится в новую книгу, то ее сначала нужно сохранить. После сохранения, возможно, потребуется нажать клавишу
F9
(Вкладка
Формулы
, Группа
Вычисление
,
Пересчет
).
Формула вернет имя листа, содержащего ячейку с вышеуказанной формулой. Если требуется определить имя другого листа, то можно использовать туже функцию
ЯЧЕЙКА()
, но с аргументом «адрес».
Для этого нужно, чтобы второй аргумент содержал ссылку на ячейку другого листа, имя которого и будет определено. Если формула
=ЯЧЕЙКА(«адрес»;лист2!A1)
находится на
листе1
в ячейке
B1
, то имя листа (
Лист2
) можно определить по формуле:
=ПСТР(B1;ПОИСК(«]»;B1)+1;ДЛСТР(B1)-ПОИСК(«]»;B1)-5)
В этом случае имя листа не должно состоять только из цифр, т.к. если в качестве названия листа использовано число, то функция
ЯЧЕЙКА()
возвращает название книги и листа в апострофах (‘) и формула вернет неправильный результат. Справиться с этим поможет формула
=ПОДСТАВИТЬ(C1;»‘»;»»)
, которая удалит символ апострофа.
Также предполагается, что имя файла не содержит символа
закрывающая квадратная скобка
( ] ).
ВНИМАНИЕ
!
Иногда, когда открыто несколько книг, функция
ЯЧЕЙКА()
может работать некорректно. Для восстановления работоспособности формулы нужно нажать клавишу
F9
(
).
ПРИМЕНЕНИЕ:
При изменении имени листа, все ссылки в формулах автоматически обновятся и будут продолжать работать. Исключение составляет функция
ДВССЫЛ()
, в которой имя листа может фигурировать в текстовой форме
ДВССЫЛ(«Лист1!A1»)
. В статье
Определение имени листа для использования в функции ДВССЫЛ()
показано как использовать функцию
ЯЧЕЙКА()
, чтобы сохранить работоспособность формулы с функцией
ДВССЫЛ()
.
Разберем несколько вариантов добавления имени листа в ячейку в Excel с помощью формул.
Чтобы присвоить ячейке имя листа в Excel можно воспользоваться следующей формулой:
=ПСТР(ЯЧЕЙКА(«ИМЯФАЙЛА»;A1);ПОИСК(«]»;ЯЧЕЙКА(«ИМЯФАЙЛА»;A1))+1;255)
Давайте по шагам разберем принцип действия формулы имени листа.
Шаг 1. Функция ЯЧЕЙКА
Функция ЯЧЕЙКА позволяет получить данные о содержимом ссылки, в том числе и имя файла.
В данном случае формула ЯЧЕЙКА(«ИМЯФАЙЛА»;A1) позволяет получить полный путь файла Excel на локальном диске:
Как мы видим название листа идет сразу после названия файла, обрамленного в квадратные скобки.
Шаг 2. Функция ПОИСК
Таким образом для извлечения имени листа необходимо найти символ закрывающейся квадратной скобки (]) с помощью функции ПОИСК, которая возвращает позицию первого вхождения искомого элемента:
Прибавляя к результату 1, мы получаем позицию с которой начинается имя листа.
Шаг 3. Функция ПСТР
После нахождения квадратной скобки нам достаточно извлечь из полного названия файла правую часть, применив функцию ПСТР.
Данная функция возвращает заданное количество знаков, начиная с указанной позиции.
Так как точное количество символов в имени листа неизвестно, то в качестве последнего аргумента функции ПСТР указываем заведомо большее число, чем длина имени листа (подойдет любое число больше 31 — максимальная длина названия листа).
Альтернативная формула
Чтобы вставить название листа в ячейку можно воспользоваться альтернативной формулой:
=ПРАВСИМВ(ЯЧЕЙКА(«ИМЯФАЙЛА»;A1);ДЛСТР(ЯЧЕЙКА(«ИМЯФАЙЛА»;A1))-ПОИСК(«]»;ЯЧЕЙКА(«ИМЯФАЙЛА»;A1)))
Отличие от предыдущего варианта заключается в использовании функции ПРАВСИМВ, которая возвращает указанное количество знаков с конца текста.
Описание используемых функций
Функция ЯЧЕЙКА:
ЯЧЕЙКА(тип_сведений; [ссылка])
Возвращает сведения о форматировании, адресе или содержимом первой ячейки ссылки.
- Тип сведений (обязательный аргумент) — текстовое значение, задающее тип сведений о ячейке (например, адрес, столбец, цвет, имяфайла, формат, скобки и т.д.);
- Ссылка (необязательный аргумент) — ячейка, по которой возвращаются данные.
Функция ПОИСК:
ПОИСК(искомый_текст; просматриваемый_текст; [начальная_позиция])
Возвращает позицию первого вхождения знака или строки текста (при чтении слева направо, прописные и строчные буквы не различаются).
- Искомый текст (обязательный аргумент) — искомый текст
- Просматриваемый текст (обязательный аргумент) — текст, по которому производится поиск;
- Начальная позиция (необязательный аргумент) — номер знака в просматриваемом тексте, с которого следует начать поиск.
Функция ПСТР:
ПСТР(текст; начальная_позиция; число_знаков)
Возвращает заданное число знаков из строки текста, начиная с указанной позиции.
- Текст (обязательный аргумент) — текст, из которого извлекают символы;
- Начальная позиция (обязательный аргумент) — позиция первого знака, извлекаемого из текста;
- Число знаков (обязательный аргумент) — количество знаков, возвращаемых функцией.
Удачи вам и до скорой встречи на страницах блога Tutorexcel.ru!