Копирование ссылок на листы и ячейки

Копирование ссылок на листы и ячейки

Допустим, у меня есть «Лист А» и «Лист Б» в одной и той же рабочей книге.

Лист B имеет ячейку, которая ссылается на лист «A», т.е. ='Лист A'!Q20

Я хочу скопировать лист B и создать «Лист C» в той же рабочей книге, и я хочу, чтобы ссылка на ячейку (='Лист A'!Q20) на листе C теперь ссылалась на лист B, т. е. ='Лист B'!Q20.

Когда я копирую лист B и создаю лист C, ссылка на ячейку по-прежнему ='Лист A'!Q20

Я видел решения похожих проблем, но не при копировании листов в пределах одной книги.

ТИА

решение1

Попробуйте эту формулу вЛист Б:

=INDIRECT("'Sheet "&CHAR(CODE(RIGHT(CELL("filename"),1))-1)&"'!A1")

введите описание изображения здесь

решение2

Вы также можете определить простую пользовательскую функцию, которая возвращает имя рабочего листа, позиция которого перемещена ofsиз текущего рабочего листа.

Function sh(ofs As Long) As String
    Dim cw As Long
    cw = Application.Caller.Parent.Index
    sh = Worksheets(cw + ofs).Name
End Function

Имя предыдущего листа будет sh(-1), следующего — sh(1).
Теперь вы можете ссылаться на ячейку Q20на предыдущем листе с помощью формулы:

=INDIRECT("'"&sh(-1)&"'!Q20")

или

=INDIRECT(ADDRESS(20,17,,,sh(-1)))

Связанный контент