Страницы: 1
RSS
Ссылка на лист левее
 
Как создать ссылку на ячейку листа левее текущего без явного указания имени листа? Чтобы при размножении листов ссылки на каждом новом листе указывали на ячейки из листа левее, а не на один и тот же самый первый (самый левый) лист?
 
добавьте модуль
в модуль скопируйте этот
Код
Function PrevSheetName$()
  Dim CL
  Set CL = Application.Caller
  If CL.Parent.Index > 1 Then PrevSheetName = "'" & Worksheets(CL.Parent.Index - 1).Name & "'!"
End Function
в любой ячейке =ДВССЫЛ(PrevSheetName() & "а тут должен быть адрес нужной вам ячейки")
не оспользуйте PrevSheetName на первом листе
но при необходимости можно с первого листа легко получить ссылку на последний, если подходит модель, в которой из имен листов составлено непрерывное кольцо
Изменено: Ігор Гончаренко - 24.11.2019 06:47:15
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ой, как быстро ответили. Спасибо, попробую, а то уже голову сломал.
 
Без VBA можно так :
Код
=ДВССЫЛ(АДРЕС(1;1;;;"Лист"&ЛИСТ()-1))

но это если название листов не менять, но думаю можно покопать в этом направлении и с названиями листов обыграть
 
Жорыч, Вы частично читаете?
Цитата
zxas82 написал:
Как создать ссылку на ячейку листа левее текущего без явного указания имени листа?
По вопросам из тем форума, личку не читаю.
 
Цитата
Жорыч написал:
=ДВССЫЛ(АДРЕС(1;1;;;"Лист"&ЛИСТ()-1))
это будет 100% эффективно, если текущий лист называется Ноябрь, а предыдущий Октябрь
Изменено: Ігор Гончаренко - 24.11.2019 15:44:55
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
я же написал, если по дефолту, не переименовывая листы будет работать (новая книга, новый лист).
То есть получилось полуявное указание листа)). В мобильном формулу строил, времени не хватило, и формул половина тут нету. Я думаю можно раскрутить конструкцию на совсем без явного указания листа. Вечерком попробую обыграть, пока думаю что можно без VBA сделать, но это не точно)).
 
Цитата
Жорыч написал:
Я думаю можно раскрутить конструкцию на совсем без явного указания листа
продолжайте заблуждаться.

Ігор Гончаренко,  Игорь, можно  
Код
On Error Resume Next
   PrevSheetName = "'" & CL.Parent.Previous.Name & "'!"
По вопросам из тем форума, личку не читаю.
 
Послезавтра отпишусь, попробовав все варианты. Спасибо за отзывчивость  
 
Способы работают, но понял, что, наверное, в моем случае не стоит их применять: формулы не заполняются протягиванием и при этом уже содержат вместо простой ссылки две вложенных функции. А у меня на листе таких ссылок сотни, 31 лист в книге... Вес файла, удобство дописывания формул протягиванием, быстродействие - всё ухудшится. Я меняю ссылки поиском и заменой на листе всех сразу, например '1'! Меняю на '2'!.
 
Вариант формулами, но макросы должны быть включены. Список листов в диспетчере имен.
Изменено: gling - 26.11.2019 23:53:16
 
Цитата
zxas82 написал:
Я меняю ссылки поиском и заменой на листе всех сразу, например '1'! Меняю на '2'!.
И это правильно. Этим вы не только облегчаете расчеты, но и страхуетесь от случайного перемещения листов с сохранением имен, скрытия листов, которые стоят на месте нужного ….

gling, понимаю что не подсвечивает аргумент таким образом, но для работы в других локализациях лучше указывать "filename" вместо "имяфайла". Работать будет у всех.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх