1

Я хотел бы сопоставить значение ячейки с именем листа, а затем вернуть значение на основе этого. Как я могу это сделать?

Например, есть 2 столбца (A и B)

Если значение в диапазоне A1:A5 = другое имя листа, то вернуть значение ячейки столбца B в этом другом имени листа.

Заранее спасибо.

1 ответ1

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .