Зеркальный столбец на отдельном листе в Excel 2010

Зеркальный столбец на отдельном листе в Excel 2010

Я пытаюсь зеркально отразить столбец из одного листа Excel в другой в пределах одной книги Excel. Цель состоит в том, чтобы второй лист обновлялся при редактировании первого. По сути, когда я добавляю/удаляю строки на первом листе, то же самое автоматически происходит и на втором листе.

В моем столбце есть имена сотрудников, и по мере того, как люди приходят/уходят из офиса, я буду добавлять/удалять их соответственно. Мои листы отслеживают разные данные, но сотрудники все те же. Мой первый лист — основной, а остальные извлекают данные соответственно. Будет ли работать формула зеркалирования? Кроме того, как применить ее ко всему столбцу?

решение1

Вот идея без VBA: «смещение».

Допустим, ваши исходные данные находятся на "Листе1", и вы хотите отразить каждую ячейку на "Листе2". Для любой ячейки на Листе2 вы можете использовать:

=OFFSET(Sheet1!$A$1,Row(A1)-1,COLUMN(A1)-1,1,1)
  • Sheet1!$A$1: ваша основная ссылочная ячейка. Это единственная ячейка, которую вы не можете переместить или удалить. Вы можете оставить Столбец 1 пустым и скрыть его, чтобы этого не произошло.
  • Row(A1)-1: «Строка(A1)» определит, в какой строке Листа2 вы находитесь. «-1» нейтрализует смещение (вы хотите прочитать ту же самую строку, в которой вы находитесь, а не следующую).
  • COLUMN(A1)-1: то же, что и выше, но для определения вашего столбца.
  • ,1,1): устанавливает размер диапазона в ячейку (1 на 2)

Я считаю, что если вы не удалите основную ссылочную ячейку (в данном примере — A1), то это должно работать, независимо от того, что вы делаете на Листе 1.

Вот несколько проблем, с которыми вы можете столкнуться при использовании этого метода:

  1. Если между данными есть пробелы (на Листе 1), может потребоваться форматирование или дополнительные формулы, чтобы избежать отображения большого количества нулей.
  2. Если вы попытаетесь использовать какую-либо формулу в качестве «counta» или «average», результаты могут быть изменены этими нулями (вы можете скрыть их, но они все равно повлияют на формулы).

решение2

это нельзя сделать с помощью простой формулы. Если вы добавляете или удаляете строки в Sheet1, формулы будет недостаточно для добавления или удаления строк в Sheet2. Для этого вам нужен другой подход.

Одним из вариантов является создание VBA, который управляет удалением и добавлением новых строк.

Другой способ — скрыть строки вместо их удаления. Добавьте столбец, в котором сотрудник отмечен как активный или неактивный. Затем отфильтруйте таблицу, чтобы скрыть неактивных сотрудников.

Формула может быть использована для извлечения имен из Sheet1 в Sheet2, а также для извлечения активных/неактивных значений для каждой строки. Например, если имя находится в столбце A в sheet1, то используйте его в Sheet2

=индекс(Лист1!$A:$A,строка())

Если статус (активный/неактивный) указан в столбце B, используйте =index(Sheet1!$A:$A,row())другой столбец, а затем выполните фильтрацию по этому столбцу.

Однако есть одна большая неотъемлемая опасность: если порядок сотрудников изменится в Sheet1, то все данные в Sheet2 будут неверными. Порядок сотрудников по-прежнему будет соответствовать порядку в Sheet1, но остальные данные не будут перемещаться с новым порядком сортировки.

Подход с использованием VBA был бы более надежным.

Связанный контент