У меня есть 10+ рабочих листов с одинаковыми макетами, которые содержат данные из разных дней. Я пытаюсь создать "SimpleSheet", который извлекает только определенные данные из однодневного листа в хорошем макете. Пока я делаю это вручную:

A1 | ='DaySheet1'.A1
A2 | ='DaySheet1'.A2

То, что я хотел бы сделать, это изменить функции вместо того, чтобы там, где написано, что DaySheet говорит «вытащить лист, который я определил в ячейке SimpleSheet B1»

B1 | *whatever sheet*
A1 | ='B1'.A1
A2 | ='B1'.A2

1 ответ1

2

Используйте Indirect .

Indirect позволяет использовать строку в качестве ссылки на местоположение листа. Таким образом, если для содержимого ячейки A1 задано «DaySheet», вы можете использовать формулу =Indirect(A1) !B1, и результат будет тем, что находится в ячейке B1 на листе DaySheet.

Со страницы поддержки:

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

РЕДАКТИРОВАТЬ: Может потребоваться упоминание о том, как справиться с ссылкой на текущую ячейку.

Чтобы перейти от листа к ячейке, вы можете либо использовать строковую ссылку (например, "A1"), concatenate d с косвенной ссылкой, либо использовать функцию address чтобы сделать это динамически. Ниже приведен пример обоих:

Строка:

= INDIRECT(CONCATENATE($ A $ 1 "!», "В1"))

Динамический:

= INDIRECT(CONCATENATE($ A $ 1 "!", АДРЕС (ROW (), COLUMN (), 4)))

Первый самый простой, когда вы не копируете слишком много ячеек. Более чем несколько, и я бы выбрал второй вариант.

MS справка по функции адреса .

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