Как в Excel указать ссылки на одну и ту же ячейку, но с разных листов (Функция ДВССЫЛ)

Один из читателей нашего сайта SirExcel задал вопрос, который может встречаться очень часто. Вопрос заключался в следующем «Как сделать так, чтобы на одном листе показывалась информация из определенной ячейки к примеру $A$1 но с каждого листа из книги? Листов очень много надо сделать сводный список содержимого определенной ячейки со всех листов.»

Я как раз собирался написать о том, как работает функция ДВССЫЛ, почему бы не рассмотреть ее именно на этом примере.

Итак, мы имеем файл Excel, в котором много листов. Давайте рассмотрим простой пример, где названия листов у нас не менялись. То есть у нас есть Лист1, Лист2, Лист3 и так далее.

Допустим, что на каждом листе (Лист1-Лист5) у нас есть данные по выручке 5 различных магазинов в виде одинаковых таблиц данных.

Пример функции ДВССЫЛ

На листе 6 есть результирующая таблица, где нам необходимо заполнить ее данными, взяв их со всех листов.

Функция ДВССЫЛ

Таким образом, чтобы заполнить данные за январь нам необходимо взять данные по выручке магазинов, находящихся в ячейке B2, но на 5 различных листов.

Конечно, в нашем примере это можно было бы сделать в ручную, указав просто ссылки на соответствующие значения, но если листов очень много, или данных очень много, то вручную это сделать будет очень затруднительно.

Существует различные способы решить данную задачу, например, с помощью простенького макроса, который можно записать макрорекодером. Ну а мы с вами для решения задачи будет использовать функцию ДВССЫЛ.

ДВССЫЛ – функция, которая возвращает ссылку заданную текстовой строкой.

Чтобы понять принцип действия данной функцию, давайте рассмотрим такой пример.

Посмотрите на рисунок ниже. В ячейке А1 написан текст D4, а в самой ячейке D4 указано число 9999. Если мы напишем формулу ДВССЫЛ(A1), то в результате получим число 9999. То же самое мы получим если напишем формулу так:
=ДВССЫЛ("D4")
То есть мы написали текстом адрес ячейки D4 и функция ДВССЫЛ вернула нам то значение, которое находится по данному адресу (D4).

Пример работы ДВССЫЛ

Надеюсь, все стало более понятным. Теперь давайте рассмотрим на нашем примере. Чтобы заполнить данные за январь с разных листов нам необходимо прописать следующие ссылки на ячейки.

=Лист1!B2 (Выручка за январь магазина 1)

=Лист2!В2 (Выручка за январь магазина 2) и т.д

Заполняем таблицу с ДВВСЫЛ

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

Если мы пропишем формулу
ДВCСЫЛ("Лист1!B2"), ДВCСЫЛ("Лист2!B2")
и так далее, то функция будет возвращать нам то же самое, но это так же не решает нашу проблему, ведь «Лист1!B2» прописан обычным текстом и так же не будет изменяться при протягивании.

Для решения нашей задачи мы разделим текст «Лист1!B2» на две части (отдельно «Лист1» и отдельно «!B2» — обратите внимание на восклицательный знак во второй части текста) и потом их склеим. Текст Лист1, Лист2 и так далее мы пропишем напротив соответствующих магазинов, при этом написав Лист1, мы сможем просто протянуть ячейку вниз и автоматически получить список Лист1, Лист2 и так далее.

Теперь сцепим этот текст внутри функции ДВССЫЛ с помощью знака & и получим формулу, которая будет автоматически протягиваться и при этом будут подтягиваться данные из одной и той же ячейки, но разных листов.

=ДВССЫЛ(A2&"!B2")

Протягиваем формулу с ДВССЫЛ

Итоговая формула выглядит именно так, но я специально расписал с самого начала по шагам, чтобы было понятно из чего состоит данная формула. В принципе, этого уже достаточно, чтобы за короткий срок решить задачу, указанную в начале статьи. Чтобы заполнить данные за февраль, нам необходимо в ячейке D2 написать такую же формулу, но поменять текст «!B2» на «!B3»
=ДВССЫЛ(A2&"!B3")
и протянуть вниз, аналогично за март.

Но никто нам не мешает немного усложнить формулу и заполнить ее автоматически, протянув формулу вниз, а затем вправо. Тут я не буду подробно описывать, но если вы разобрались с предыдущим примером, то легко поймете и данный.

Итак, мы решили задачу, как быстро заполнить данные за определенный месяц, но нам необходимо заполнить данные за остальные месяца. Мы знаем, что данные за Январь соответствуют ячейке B2, февраль — B3, Март — B4. То есть буква «B» остается неизменной, меняется лишь цифра. Зная это мы просто разобьем  текст внутри ссылки ДВССЫЛ не на 2 части, а на три. Добавим дополнительно строку над таблицей и напишем сверху цифры соответствующие ячейки месяца. Пропишем формулу.

=ДВССЫЛ(A3!B«&C1), где A3 — это текст «Лист1«, «!B» — это неизменный текст и С1 — это цифра 2. Все это объединено с помощью знака & в общий текст «Лист1!B2«. Нам также потребуется закрепить столбец A (с помощью знака $), чтобы он не менялся при протягивании формулы вправо и строку 1, чтобы она не менялась при протягивании формулы вниз. Мы получаем следующую итоговую формулу.

=ДВССЫЛ($A3&"!B"&C$1)
которую можно протянуть вправо и вниз.

Как работает функция ДВССЫЛ

Заметки по теме:

  • Если бы листы назывались у нас Магазин 1, Магазин 2 и так далее, то дополнительный столбец со словами Лист1, Лист2 и так далее нам бы не потребовался.
  • Функцию ДВССЫЛ используют часто тогда, когда требуется изменить ссылку на ячейку в формуле, не изменяя саму формулу.

Если вам понравилась статья, пожалуйста, нажмите +1 и «Мне нравится». Так же подписывайтесь на нашу рассылку или вступайте в нашу группу ВКонтакте, чтобы не пропустить наши следующие уроки по Excel

SirExcel — безграничные возможности Excel

Поделиться:
12 Комментариев
  • Игорь says:

    А если мне нужно не в таблице указать путь, а в графике, при выборе значения оси X? Мне нужно чтобы с каждого листа по одной ячейки указать в формулу значений оси Х

  • Паша says:

    Бля, от души, братан! Очень выручил!

  • Александр says:

    Здравствуйте!
    Не работает почему то когда лист обозначен например 06.05.2015(1-5)

  • Станислав says:

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

  • Нуржан says:

    Здравствуйте!
    А как сделать так, чтобы можно извлекать определенный диапазон из разных листов?
    К примеру. У меня есть 30 листов и мне надо извлечь только диапазон А1:А30 из каждого листа и скомпоновать их в одном листе?

  • Begaiym says:

    Отличная статья! Подробно и доступно!
    Спасибо человеческое^^

    • excel says:

      Спасибо за отзыв

  • Дмитрий says:

    Спасибо, все очень доходчиво!
    Но в примере =ДВССЫЛ($A3& «!B»&C$1) считается, что ежемесячные результаты находятся на листах в одном столбце (B2 = январь, B3=февраль). Подскажите, пожалуйста, как следует изменить эту формулу, если на листах ежемесячные результаты расположены в одной строке (B2 = январь, С2=февраль), так же, как на итоговой таблице?

    • excel says:

      Нет времени вникать в суть. В целом будет наоборот
      =ДВССЫЛ($A3&"!B"&C$1
      вместо «!B» — у вас будет ссылка на изменяющиеся значения, а вместо &C$1 будет закрепленная цифра строки.
      Если пришлите пример, можно будет посмотреть когда будет время

  • Нина says:

    Спасибо

  • Сергей says:

    О ДА!! То что искал!

  • Сергей says:

    Спасибо.

Добавить комментарий

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.

×
Рекомендуем посмотреть