Есть файл, в нем листы с именами Янв.24, Фев.24, Мар.24 и т.д. На каждом листе есть итог. На следующем листе необходимо вывести итог прошлого листа, но чтобы вручную не вносить изменение при копировании всего листа на новый лист решил разобраться, как сделать это "на лету".
В результате получилась рабочая формула: =ДВССЫЛ(ТЕКСТ(ДАТАМЕС(ДАТАЗНАЧ(ПРАВСИМВ(ЯЧЕЙКА("filename");6));-1);"МММ.гг")&"!R30C9";ЛОЖЬ) Суть её - получаем имя текущего листа, преобразуем в дату, вычитаем 1 месяц, получаем имя предыдущего листа, и через функцию ДВССЫЛ получаем значение с предыдущего листа с конкретной ячейки.
Вроде бы все работает, но когда я начал копировать её и вставлять на предыдущие листы - значение, которое вычисляется после нажатия Enter - обновляется и на всех остальных листах.
Открыл Май.24, зашел в ячейку с формулой, нажал Enter, и вычисленное значение для этого листа прописалось и на листе Май.24 и на листе Апр.24 и на Мар.24 и т.д. Захожу в Янв.24, в ячейку, нажимаю Enter - и вот вычисленное значение на всех листах одновременно, где использована эта формула.
Если прописывать вручную ДВССЫЛ("Май.24!R30C9", ЛОЖЬ) на одном листе, ДВССЫЛ("Апр.24!R30C9", ЛОЖЬ) на другом, ДВССЫЛ("Мар.24!R30C9", ЛОЖЬ) на третьем и т.д., то такого глюка нет. Но хотелось как раз уйти от ручного ввода каждый раз (при создании нового листа на новый месяц).
Есть файл, в нем листы с именами Янв.24, Фев.24, Мар.24 и т.д. На каждом листе есть итог. На следующем листе необходимо вывести итог прошлого листа, но чтобы вручную не вносить изменение при копировании всего листа на новый лист решил разобраться, как сделать это "на лету".
В результате получилась рабочая формула: =ДВССЫЛ(ТЕКСТ(ДАТАМЕС(ДАТАЗНАЧ(ПРАВСИМВ(ЯЧЕЙКА("filename");6));-1);"МММ.гг")&"!R30C9";ЛОЖЬ) Суть её - получаем имя текущего листа, преобразуем в дату, вычитаем 1 месяц, получаем имя предыдущего листа, и через функцию ДВССЫЛ получаем значение с предыдущего листа с конкретной ячейки.
Вроде бы все работает, но когда я начал копировать её и вставлять на предыдущие листы - значение, которое вычисляется после нажатия Enter - обновляется и на всех остальных листах.
Открыл Май.24, зашел в ячейку с формулой, нажал Enter, и вычисленное значение для этого листа прописалось и на листе Май.24 и на листе Апр.24 и на Мар.24 и т.д. Захожу в Янв.24, в ячейку, нажимаю Enter - и вот вычисленное значение на всех листах одновременно, где использована эта формула.
Если прописывать вручную ДВССЫЛ("Май.24!R30C9", ЛОЖЬ) на одном листе, ДВССЫЛ("Апр.24!R30C9", ЛОЖЬ) на другом, ДВССЫЛ("Мар.24!R30C9", ЛОЖЬ) на третьем и т.д., то такого глюка нет. Но хотелось как раз уйти от ручного ввода каждый раз (при создании нового листа на новый месяц).insurgut
Функция Ячейка() выдаёт имя АКТИВНОГО листа на любом листе, поэтому на всех листах будет одно и то же значение, в зависимости от того, на каком листе был пересчёт.
Функция Ячейка() выдаёт имя АКТИВНОГО листа на любом листе, поэтому на всех листах будет одно и то же значение, в зависимости от того, на каком листе был пересчёт.Светлый
Функция Ячейка() выдаёт имя АКТИВНОГО листа на любом листе
Тогда понятно, почему так себя ведет моя формула. Получается решить данную задачу без использования макросов никак нельзя? Или можно получить имя листа какой-то другой функцией?
Функция Ячейка() выдаёт имя АКТИВНОГО листа на любом листе
Тогда понятно, почему так себя ведет моя формула. Получается решить данную задачу без использования макросов никак нельзя? Или можно получить имя листа какой-то другой функцией?insurgut
Ну просто тяните данные из базы, зачем этот гемор с листами? Ну или делайте такую базу на одном листе, и с него уже формулами растягивайте что угодно куда угодно.
Ну просто тяните данные из базы, зачем этот гемор с листами? Ну или делайте такую базу на одном листе, и с него уже формулами растягивайте что угодно куда угодно.Hugo