Если 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 , который будет идти и извлекать значение по этому адресу.