Страницы: 1
RSS
Как во все листы вставить в определенную ячейку название каждого соответствующего листа?
 
Здравствуйте,

Помогите, пожалуйста, решить следующий вопрос: как во все листы вставить в определенную ячейку название каждого соответствующего листа?
Создал именованный диапазон
Код
MID(GET.WORKBOOK(1);FIND("]";GET.WORKBOOK(1))+1;LEN(GET.WORKBOOK(1))-FIND("]";GET.WORKBOOK(1)))&T(NOW())

Только проблема в том, что во всех листах получаю имя первого листа, а не соответствующего листа.

Заранее благодарю.
 
Arthur26, имя листа можно получить, например, так
Код
=ПСТР(ЯЧЕЙКА("имяфайла");ПОИСК("]";ЯЧЕЙКА("имяфайла"))+1;ДЛСТР(ЯЧЕЙКА("имяфайла")))
 
формулой на любой лист:
Код
=ПСТР(ЯЧЕЙКА("имяфайла");НАЙТИ("]";ЯЧЕЙКА("имяфайла"))+1;31)
Изменено: venom51 - 19.03.2020 12:13:41
 
Следовал вашим советам, но ожидаемый результат так и не получил.
 
Arthur26 сделайте без именованного диапазона.
 
Мне надо именованным диапазаном реализовать.
 
Arthur26, у меня работает с именованным диапазаном в том файле что вы приложили последнем. Смотрите включен ли у вас автоматический пересчет формул. Если включен щелкайте в пустую ячейку например чтобы пересчитались формулы на листе.
Изменено: venom51 - 19.03.2020 14:30:53
 
Да, у меня включен. Каждый раз надо щелкать в ячейку?  
 
да, пересчет производится при любом изменении на листе.
И конструкцию &T(NOW() можете не добавлять в формулу так как в ней и так содержатся летучая функция Ячейка().
похожая тема
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=3912
+ из приёмов ваша формула которую изначально используете упоминается
https://www.planetaexcel.ru/techniques/3/60/
Изменено: venom51 - 19.03.2020 15:29:00
 
Все приведенные формулы ЯЧЕЙКА неправильные. Для получения в ячейку каждого листа именно его имени надо добавить ссылку на ячейку на этом листе. Иначе функция будет возвращать имя АКТИВНОГО листа. Описывал все это здесь: Как получить имя листа формулой
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Уважаемый Дмитрий,
Дело в том, что мне надо эту формулу использовать в именнованном диапазоне, а не в ячейке. В ячейке работает, а в именнованном диапазоне - нет.
 
Ну тут вопрос: почему именно именованный нужен? Где потом используется? Ибо выше верно тогда написали - достаточно просто изменить любую ячейку и имя пересчитается. Проблема в том, что при каждом пересчете правильное имя листа Вы в любом случае получите исключительно для активного листа. Для остальных листов(не активных) Ваше имя вернет имя листа активного. Как ни крути. И если на это имя завязаны расчеты и на других листах - то расчеты могут оказаться неверными.
Проверьте: запишите в листы 1 и 2 свою именованную формулу =zzz. На листе 1 увидите "Sheet1". Перейдите на лист 2 - там тоже будет "Sheet1". Пересчитайте формулы любым способом. На Листе 2 увидите "Sheet2". Но перейдя на лист 1 там тоже будет "Sheet2"...Пока не пересчитаете.
Поэтому лучше все же применить UDF GetShName из ссылки, что я привел выше. Только добавить там первой строкой Application.Volatile True, чтобы функция при каждом чихе пересчитывалась. Или ТДАТА добавьте при создании именованной формулы. В имя zzz можно будет запихнуть уже её: =GetShName()
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Уважаемый Дмитрий,
А как вставить пользовательскую функцию в функцию Excel?
Создал в именнованном диапазоне nnn и приписал =COUNT('GetShName()'!B7:D7), но не работает.
 
Arthur26,
=COUNT('GetShName()'!B7:D7) - так b не заработает. Как Вы бы вставляли обычную функцию? Здесь проблема не в том, что функция на VBA, а в неверном использовании в принципе. Наверное, надо помнить и про амперсанд и про то, что GetShName() возвращает текстовое представление имени листа, а не ссылку на лист. Поэтому надо использовать ДВССЫЛ(INDIRECT):
Код
=COUNT(INDIRECT("'" & GetShName() & "'!B7:D7")
P.S. Считается плохим тоном писать в личку, если я вдруг не ответил в ожидаемые Вами сроки в Вашей теме. Буду свободен и будет желание - отвечу без лишних напоминаний в личке. Это на будущее.
Изменено: Дмитрий(The_Prist) Щербаков - 20.03.2020 13:58:06 (скобочка в конце пропала)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо Дмитрий,
А сейчас проблема в том, что формула работает только для конкретной строки.
Как изменить код, чтобы для всех строк работала?
Спасибо.
Изменено: Arthur26 - 20.03.2020 14:24:52
Страницы: 1
Наверх