Menu

ДВССЫЛ в Excel (эксель): ссылка на ячейку из текста

=ДВССЫЛ("C"&E2) читает ячейку, адрес которой собран как текст: столбец C, строка из E2. С её помощью выбирают лист по имени из ячейки, строят диапазоны из чисел и делают зависимые раскрывающиеся списки.

Каждая таблица на этой странице живая: измените число или формулу, и она пересчитается.

=ДВССЫЛ(E2) (по-английски INDIRECT) читает ячейку, адрес которой записан текстом в E2. Если в E2 написано C4, формула возвращает значение из C4. Адрес можно собрать и из частей: =ДВССЫЛ("C"&E3) читает столбец C в строке с номером из E3. Таблицы на этой странице показывают английскую запись, но формулы в них можно вводить и по-русски, с точкой с запятой.

Ссылка, записанная текстом
F2
ABCDEF
1ProductCategoryPriceAddressValue
2AppleFruit$1.20C4$0.80
3PearFruit$1.506$1.10
4CarrotVegetable$0.80
5BreadBakery$2.40
6MilkDairy$1.10
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ДВССЫЛ(E2)

F2 читает C4, цену Carrot, $0.80. Замените E2 на C3 или B5, и F2 последует за ним. F3 соединяет "C" и 6 из E3 в адрес C6 и возвращает $1.10. Замените E3 на 2, чтобы получить цену Apple.

Синтаксис ДВССЫЛ

=INDIRECT(ref_text, [a1])
  • ref_text (ссылка_на_текст): текст, в котором записана ссылка: "C4", "B2:B6", "Prices!A2", "'Price list'!A2:B9".
  • a1: ИСТИНА или пропущен для адресов в стиле A1. ЛОЖЬ читает стиль R1C1, где "R4C3" означает строку 4, столбец 3, что удобно, когда и строка, и столбец заданы числами.

Если текст не является правильным адресом, результат #ССЫЛКА! (по-английски #REF!; таблицы на этой странице показывают ошибки под английскими именами). ДВССЫЛ возвращает настоящую ссылку, поэтому работает внутри СУММ, СЧЁТЕСЛИ, ВПР и любой функции, которая принимает диапазон.

Диапазон из чисел

Адрес может быть целым диапазоном. Если подставить в него число, получится диапазон, размер которого берётся из ячейки.

Итог первых N строк
F2
ABCDEF
1MonthSalesRowsTotal
2Jan4,200312,900
3Feb3,900
4Mar4,800
5Apr5,100
6May4,600
7Jun5,300
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =СУММ(ДВССЫЛ("B2:B"&(1+E2)))

При 3 в E2 текст становится B2:B4, и F2 складывает Jan…Mar: 12,900. Поставьте в E2 6 для полугодия, 27,900. 1+E2 нужно потому, что данные начинаются со строки 2. В русском Excel формула пишется =СУММ(ДВССЫЛ("B2:B"&(1+E2))). Тот же итог можно записать без ДВССЫЛ, =СУММ(B2:ИНДЕКС(B2:B7;E2)), и эта формула не летучая; варианты сравниваются на странице СМЕЩ.

Ссылка на лист, названный в ячейке

Имя листа тоже может браться из ячейки. Так одна итоговая формула превращается в поиск по листам: каждая строка читает лист, названный в столбце A. Одинарные кавычки вокруг имени нужны, чтобы формула работала и с именами, в которых есть пробелы.

Один итог на каждый лист месяца
B2
AB
1MonthTotal
2Jan12,500
3Feb12,200
4Mar13,700
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =СУММ(ДВССЫЛ("'"&A2&"'!B2:B4"))

B2 собирает текст 'Jan'!B2:B4 и складывает этот диапазон: 12,500. B3 и B4 это та же формула, протянутая вниз, поэтому они читают Feb (12,200) и Mar (13,700). Откройте лист Feb и измените число: итог последует за ним. Введите Feb вместо Jan в A2, и B2 будет складывать Feb. B2:B4 внутри кавычек это текст, поэтому при протягивании формулы вниз он не меняется; меняется только ссылка на A2.

Зависимые раскрывающиеся списки

Второй раскрывающийся список, пункты которого зависят от первого, это классическая задача для ДВССЫЛ. В Excel её обычно настраивают так:

  1. Разместите пункты каждой категории в отдельном столбце и назовите каждый диапазон по его категории: выделите столбцы вместе с заголовками и выберите «Формулы > Создать из выделенного > в строке выше». Так появятся имена Fruit, Vegetable и Dairy.
  2. Задайте A2 список категорий: «Данные > Проверка данных > Тип данных: Список», Источник Fruit,Vegetable,Dairy (в русском Excel элементы списка разделяются точкой с запятой).
  3. Задайте B2 список с Источником =ДВССЫЛ(A2). Когда в A2 написано Fruit, список читает диапазон с именем Fruit.

Таблица ниже строит то же самое, только вместо именованных диапазонов у каждой категории свой лист. D2 с помощью ДВССЫЛ выводит пункты листа, названного в A2, а список в B2 читает D2:D4.

Список товаров, зависящий от категории
D2
ABCD
1CategoryItemItems for the category
2FruitAppleApple
3Pear
4Plum
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.В русском Excel: =ДВССЫЛ("'"&A2&"'!A2:A4")

Выберите Dairy в A2: D2:D4 переключится на Milk, Butter, Cheese, и варианты в B2 тоже. B2 сохраняет старое значение, пока вы не выберете новое; Excel ведёт себя так же, поэтому в формы часто добавляют рядом с пунктом проверку вроде =СЧЁТЕСЛИ(D2:D4;B2)>0. В Excel 365 можно обойтись без именованных диапазонов и направить второй список на формулу с динамическим массивом, например =ДВССЫЛ("'"&A2&"'!A2:A4") во вспомогательной ячейке и =D2# в качестве Источника. Остальная настройка описана на странице раскрывающийся список.

ДВССЫЛ летучая и не замечает вставленных строк

У того, что ДВССЫЛ читает текст, а не ссылку, два побочных эффекта:

  • Она пересчитывается при каждом изменении. Excel не может знать, на какие ячейки укажет текст, поэтому пересчитывает каждую ДВССЫЛ после любой правки в любом месте книги. Несколько десятков таких формул не вредят; десятки тысяч замедляют каждое нажатие клавиши. ИНДЕКС с номером строки (=ИНДЕКС(C:C;E3)) даёт тот же результат, что =ДВССЫЛ("C"&E3), и пересчитывается, только когда меняются её входные данные.
  • Адрес не сдвигается. Вставьте строку над строкой 4, и =C4 станет =C5, а =ДВССЫЛ("C4") по-прежнему читает C4, где теперь другая строка. Иногда в этом и смысл: ссылка должна стоять на фиксированной ячейке, что бы ни случилось с листом. Но чаще это ошибка, которая ждёт, пока кто-нибудь вставит строку.

ДВССЫЛ на другую книгу работает, только пока эта книга открыта; если она закрыта, функция возвращает #ССЫЛКА!.

Практика: цена по номеру строки

Прайс-лист
F2
ABCDEF
1ProductCategoryPriceRowPrice
2AppleFruit$1.205
3PearFruit$1.50
4CarrotVegetable$0.80
5BreadBakery$2.40
6MilkDairy$1.10
Нажмите на ячейку, чтобы увидеть её формулу. Измените число или формулу, и таблица пересчитается.

Ваша очередь: В F2 с помощью ДВССЫЛ верните цену из столбца C в строке, номер которой записан в E2.

Часто задаваемые вопросы

Что делает ДВССЫЛ в Excel?

Превращает текст в ссылку. =ДВССЫЛ("C4") возвращает значение C4, а =ДВССЫЛ(E2) возвращает значение той ячейки, адрес которой записан в E2. Адрес можно собрать через &, поэтому =ДВССЫЛ("C"&E2) читает столбец C в строке с номером из E2.

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

Соберите адрес с именем листа в одинарных кавычках: =ДВССЫЛ("'"&A2&"'!B2"). Кавычки нужны, чтобы формула работала и с именами, в которых есть пробелы. =СУММ(ДВССЫЛ("'"&A2&"'!B2:B4")) складывает диапазон на этом листе.

Почему ДВССЫЛ возвращает #ССЫЛКА!?

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

ДВССЫЛ летучая функция?

Да. Excel пересчитывает каждую ДВССЫЛ при любом изменении в книге, потому что не может заранее знать, на какие ячейки укажет текст. Несколько таких формул безвредны; тысячи замедляют книгу. Часто ту же работу без летучести делает ИНДЕКС.

Иллюстрация языков программирования Coddy

Учитесь программировать с Coddy

НАЧАТЬ