Если A2 в Sheet1 содержит формулу, а B2 содержит имя листа "Sheet2", это приведет к получению значения в Sheet2!A2:
=INDIRECT(B2&"!"&ADDRESS(ROW(),COLUMN()))
Чтобы получить значение в Sheet2!B2 вместо этого, вы можете добавить 1 к COLUMN()
:
=INDIRECT(B2&"!"&ADDRESS(ROW(),COLUMN()+1))
Объяснение:
INDIRECT
возвращает значение, хранящееся в ячейке, используя некоторый текст, отформатированный в качестве стандартной ссылки на ячейку, такой как "A2" или «Sheet2!$ A $ 2" . Теперь мы попытаемся сгенерировать этот текст автоматически.
ADDRESS(row, col)
столбец ) преобразует номера ячеек и столбцов в стандартную ссылку на ячейку в текстовом формате. АДРЕС (1,1) возвращает «$ A $ 1» и так далее.
ROW()
возвращает номер строки, в которой находится формула, и COLUMN()
для номера столбца. Поскольку формула находится в A2, ROW()
будет равно 2, а COLUMN()
будет равно 1. Это просто простые числа, поэтому мы можем добавить 1 к номеру столбца, чтобы получить B вместо A. Мы передаем эти числа в ADDRESS(2,2)
чтобы получить «$ B $ 2».
- Мы добавляем этот адрес к желаемому имени листа в B2:
B2&!"&ADDRESS(ROW(),COLUMN())
, не забывая восклицательный знак между ними, чтобы получить полную ссылку на ячейку, нам нужно:" Sheet2!$ B $ 2"
- Последний шаг, мы предоставляем этот текст для
INDIRECT
, который будет идти и извлекать значение по этому адресу.