Я пытаюсь получить полное имя листа динамически по адресу с помощью приведенной ниже формулы на другом листе. Есть ли способ лучше ?
адрес: '[Аэропорт - Ежедневный расход_2024.05.08.xlsx]Штаб-квартира 2024'!$A$1
результат: «Штаб-квартира 2024»
моя формула:
= "'"&MID(TEXTAFTER(CELL("address";'HQ 2024'!A1);"]";1;0);1;
FIND("~";SUBSTITUTE(TEXTAFTER(CELL("address";'HQ 2024'!A1);"]";1;0);"'";"~";1))
)
PS, если имя таблицы изменится, я не хочу, чтобы моя другая формула, связанная с этим листом, была испорчена...
@MayukhBhattacharya, я не знаю почему :) спасибо... пожалуйста, опубликуй это как ответ...
Вот альтернативный способ: можно попробовать использовать TEXTBEFORE()
и TEXTAFTER()
:
= "'"&TEXTBEFORE(TEXTAFTER(CELL("address",'HQ 2024'!A1),"]"),"!")
Почему бы вам не использовать оценку формулы, которую можно найти на ленте «Формулы», глава «Аудит формул», «Оценка формулы», как показано на следующем снимке экрана:
Оценивая шаг за шагом, вы можете увидеть, где что-то идет не так.
Вот, например. вы можете видеть, что проблема вызвана функцией CELL("address";'HQ 2024'!A1)
, которая возвращает адрес вашей ячейки, но не ее содержимое.
на самом деле проблем нет, моя формула работает... я хотел найти более простую формулу...
Я использую:
Это в ячейке DA1, чтобы получить имя листа:
MID(CELL("filename",A1),FIND("]",CELL("filename",A1),1)+1,50)
использует позицию «]», а затем:
Это чтобы получить список всех листов между первым и последним, так как есть другие листы, которые я не хочу перечислять:
TEXTSPLIT(TEXTJOIN(",", FALSE,Firstsheet:Lastsheet!DA1),",")
спасибо за ответ, но имя файла возвращает ошибку #VALUE в моем Excel, поэтому вместо этого мне приходится использовать адрес...
Вы «имя файла» взяли в кавычки? или в вашем языке это слово другое? это аргумент функции cell().
хотя в кавычках справки по формуле отображается «имя файла», он возвращает ошибку...
Ну, я думаю, вы допускаете ошибку, которую не заметили, то, что я написал, работает правильно.
с синтаксисом все в порядке... посмотрите видео
Видео проверять не надо - у меня есть рабочая версия :)
но самое главное для меня, что ваша формула не работает в моей версии (:
Почему вы не использовали что-то вроде этого:
= "'"&TEXTBEFORE(TEXTAFTER(CELL("address",'HQ 2024'!A1),"]"),"!")