У меня есть одна рабочая тетрадь.
В нем у меня есть несколько листов, которые я переименовал в номера, причем первый лист — это база данных, из которой я хочу извлечь номер.
лист1переименован в A: содержит данные, которые я хочу извлечь
лист2переименовано в 1: формула в ячейке B3
должна быть=A!B1
лист3переименовано в 2: формула в ячейке B3
должна быть=A!B2
лист4переименовано в 3: формула в ячейке B3
должна быть=A!B3
лист5переименовано в 4: формула в ячейке B3
должна быть=A!B4
Я могу извлечь имя листа, которое я переименовал в цифру выше, с помощью этой формулы
IF(ISERROR(RIGHT(CELL("filename";$A$1);LEN(CELL("filename";$A$1))-FIND("]";CELL("filename";$A$1))));"This workbook never saved";RIGHT(CELL("filename";$A$1);LEN(CELL("filename";$A$1))-FIND("]";CELL("filename";$A$1))))
Но я не могу использовать его для изменения ссылки на ячейку так, чтобы в листе 1
была =A!B1
и в листе 2
была =A!B2
ссылка на ячейку менялась всякий раз, когда я меняю имя листа.
Может ли кто-нибудь помочь мне с этим, чтобы формула была примерно такой:=A!B(sheetname)
решение1
Попробуй это
=INDIRECT("A!B"&yourformula)
Одним из недостатков INDIRECT
является то, что если вы измените имя листа A
, например Kitchen
, , формула не обновится до "Kitchen!B"&yourformula
.
И, пожалуйста, помните, что INDIRECT
это неэлегантный способ решения проблем. Это ужасно медленно, особенно когда вы имеете дело с МНОГОМ КОСВЕННЫХ!!