Страницы: 1
RSS
Как вставить ссылку на предыдущий лист, Как вставить относительную ссылку на предыдущий лист
 
Добрый день, уважаемые.

Создал файл с названиями листов по датам:
11.11.2020, 12.11.2020 и т.д.
Мне надо сделать ссылки, которые ссылались бы на лист, в названии которого стоит предыдущая дата (ячейки на листе "12.11.2020" ссылаются на лист "11.11.2020", 19.11.2020 на 18.11.2020 и.т.д.)

Название листа я получаю через  
Код
 =ПРАВСИМВ(ЯЧЕЙКА("имяфайла");ДЛСТР(ЯЧЕЙКА("имяфайла"))-ПОИСК("]";ЯЧЕЙКА("имяфайла")))

Чтобы получить предыдущую дату, то вычитаю единицу  
Код
=ПРАВСИМВ(ЯЧЕЙКА("имяфайла");ДЛСТР(ЯЧЕЙКА("имяфайла"))-ПОИСК("]";ЯЧЕЙКА("имяфайла")))-1

Если в ручную ставить ссылку, то получается, например  
Код
='11.11.2020'!E5

А вот как вместо '11.11.2020'  вставить формулу  =ПРАВСИМВ(ЯЧЕЙКА("имяфайла");ДЛСТР(ЯЧЕЙКА("имяфайла"))-ПОИСК("]";ЯЧЕЙКА("имяфайла")))-1 никак не могу понять(

Помогите, пожалуйста. Заранее спасибо.
 
Цитата
norbert написал:
Название листа я получаю через
не рекомендую ЯЧЕЙКА("имяфайла") вернет имя файла и лист тот , на котором вы находитесь в текущий момент. то есть все листы при пересчете будут ссылатся не на предыдущий, а на один. Лучше  ЧЕЙКА("имяфайла";A1)
а вставить просто "'" & ..... &"'!E5"
ну и это использовать  в INDIRECT()  ДВССЫЛ()
Изменено: БМВ - 18.11.2020 13:24:50
По вопросам из тем форума, личку не читаю.
 
Имя предыдущего листа
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
БМВ, сделайте, пожалуйста, прям текстом как надо на моих примерах формул, а то совсем запутался (и еще туповат)))
 
=INDIRECT(TEXT(RIGHT(CELL("filename";A1);LEN(CELL("filename";A1))-SEARCH("]";CELL("filename";A1)))-1;"'ДД.ММ.ГГГ'!\E\5"))
хотя мне больше нравится
=INDIRECT(TEXT(REPLACE(CELL("filename";A1);1;SEARCH("]";CELL("filename";A1));)-1;"'ДД.ММ.ГГГ'!\E\5"))
или
=INDIRECT(TEXT(TRIM(RIGHT(SUBSTITUTE(CELL("filename";A1);"]";REPT(" ";32));32))-1;"'ДД.ММ.ГГГ'!\E\5"))

но если есть риск удаления первой строки или столбца, или иного другого куда нацелена функция, то
=INDIRECT(TEXT(TRIM(RIGHT(SUBSTITUTE(CELL("filename";INDIRECT("a1"));"]";REPT(" ";32));32))-1;"'ДД.ММ.ГГГ'!\E\5"))
Изменено: БМВ - 18.11.2020 13:53:03
По вопросам из тем форума, личку не читаю.
 
Работает, спасибо большое!
А можно эту формулу
Код
=ДВССЫЛ(ТЕКСТ(СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(ЯЧЕЙКА("filename";ДВССЫЛ("a1"));"]";ПОВТОР(" ";32));32))-1;"'ДД.ММ.ГГГ'!\E\5"))
сделать на относительной ссылке, чтобы я мог ее скопировать во все ячейки этого столбца? Я когда \E\5 меняю на E5 формула перестает работать( И не могу найти, что бэкслэш  делает( знаю только про $E$5
 
Цитата
norbert написал:
чтобы я мог ее скопировать во все ячейки этого столбца?
можно, но я не хочу чтоб меня потом прокляли. Все эти формулы будут пересчитываться при каждом чихе. Это будет сильно затруднять работу. Так что подумайте хорошенько. С учетом листа на каждый день предвижу много листов, много вычислений и тормознутость файлов и даже тех которые будут открыты параллельно.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал: Все эти формулы будут пересчитываться при каждом чихе.
Понимаю ))))

Цитата
...предвижу... много вычислений и тормознутость файлов...
А можете направить в правильную сторону, как реализовать ежедневный акт списания, в который переносились бы остатки с предыдущего дня? Может мне надо сделать по отдельному файлу на каждый день, который бы остатки из предыдущего файла вытаскивал? Ну чтоб меня тоже потом не прокляли))
 
в отдельную ячейку тянете имя предыдущего листа. А потом уже делаете в своих формулах ссылку именно на эту одну ячейку. И проще и вычислений поменьше.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
vikttur написал:
Вернитесь, подумайте, приведите сообщения в порядок
Подправил, спасибо
 
Сообщение №8. Зачем там вообще копия предыдущего сообщения?! Не знаете, что такое "цитата" и для чего применяется? Гуглите...
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
И проще и вычислений поменьше
да не особо. Основная тяжесть все равно в летучем пересчете. Хотя конечно убрав работу по вычислению имени , будет проще, тут спору нет.
=TEXT(RIGHT(CELL("filename";A1);LEN(CELL("filename";A1))-SEARCH("]";CELL("filename";A1)))-1;"ДД.ММ.ГГГ")
и на нее сослаться
=INDIRECT(ADDRESS(ROW(E5);COLUMN(E5);;;$S$2))
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Основная тяжесть все равно в летучем пересчете.
это да. Но вариантов тут других просто нет. Это хоть как-то разгрузит пересчет, т.к. ЯЧЕЙКА не самая "легкая" и быстрая функция.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Но вариантов тут других просто нет.
Дима, когда на сторону темной силы перехожу я случай редкий тут. Клонов атаку предвижу я.  :D
Там в примере уже есть попытка сделать макрос по воспроизводству следующего листа из шаблонного. Думаю мысль предельно понятна. Не в формулах это в шаблоне держать а новый лист формулами нужными наполнять при клонировании.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Не в формулах это в шаблоне держать а новый лист формулами нужными наполнять при клонировании.
Но в старых же листах формулы так и останутся, даже если они будут наполнятся при клонировании, а не из шаблона?
 
рациональное решение проблемы следующее:
1. создаете копию файла
2. на каждом листе добавляете в начало колонку Дата и заполняете ее соотв. датой для всех строк
3. последовательно копируете данные всех листов (без заголовков) в первый лист
это займет несколько минут, данные собраны на лист

данные организованные таким способом обрабатываются элементарными формулами
поставьте фильтр и элементарно отфильтруйте данные за любой день
и на вид все как было, а обрабатывается - элементарно

потом на этот лист день за днем положит данные следующего месяца, потом следующего, потом следующего года
при условии что данных за день 200-300 строк. одного листа достаточно для хранения данніх за 5-10 лет
и все это на одном листе и обрабатывается простыми формулами
подумайте немного в этом направлении
Изменено: Ігор Гончаренко - 18.11.2020 15:30:43
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал: рациональное решение проблемы
Логично. Спасибо, Iгор! Видимо, так и сделаю.
Страницы: 1
Наверх