Значение с предыдущего листа excel

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

=ДВССЫЛ(«‘»&ТЕКСТ(ЛЕВБ(ПРАВБ(ЯЧЕЙКА(«имяфайла»;C3);ДЛСТР(ЯЧЕЙКА(«имяфайла»;C3))-ПОИСК(«]»;ЯЧЕЙКА(«имяфайла»;C3)));2)-1;»00″)&ПРАВБ(ПРАВБ(ЯЧЕЙКА(«имяфайла»;C3);ДЛСТР(ЯЧЕЙКА(«имяфайла»;C3))-ПОИСК(«]»;ЯЧЕЙКА(«имяфайла»;C3)));3)&»‘!»&ЯЧЕЙКА(«адрес»;C3))+$B3
или
=INDIRECT(«‘»&TEXT(LEFTB(RIGHTB(CELL(«имяфайла»,C3),LEN(CELL(«имяфайла»,C3))-SEARCH(«]»,CELL(«имяфайла»,C3))),2)-1,»00″)&RIGHTB(RIGHTB(CELL(«имяфайла»,C3),LEN(CELL(«имяфайла»,C3))-SEARCH(«]»,CELL(«имяфайла»,C3))),3)&»‘!»&CELL(«адрес»,C3))+$B3
ЗЫ Если в именах листов будут посторонние символы (как в примере лишние пробелы), то формула не будет работать. Формула только для одного месяца.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

Как ссылаться на конкретное значение ячейки из предыдущего листа при создании копии в Excel? Например, при создании копии Sheet2 вы можете захотеть автоматически ссылаться на ячейку A1 Sheet2 на новый скопированный рабочий лист (говорит Sheet3). Как этого добиться? Эта статья вам поможет.

Использовать / ссылочное значение из предыдущего рабочего листа с пользовательской функцией
Используйте/ссылочное значение из предыдущего рабочего листа с Kutools for Excel


Использовать / ссылочное значение из предыдущего рабочего листа с пользовательской функцией

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

1. После создания нового пустого листа (говорит Sheet3), нажмите другой + F11 в то же время, чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули. Затем скопируйте и вставьте следующий код VBA в окно кода.

VBA: использовать / ссылочное значение из предыдущего листа в Excel

Function PrevSheet(RCell As Range)
    Dim xIndex As Long
    Application.Volatile
    xIndex = RCell.Worksheet.Index
    If xIndex > 1 Then _
        PrevSheet = Worksheets(xIndex - 1).Range(RCell.Address)
End Function

3. нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.

4. Выберите пустую ячейку Sheet3 (говорит A1), введите формулу = PrevSheet (A1) в Панель формул и затем нажмите Enter .

Теперь вы получите значение ячейки A1 предыдущего листа (Sheet2) на текущем листе.

Внимание: Код автоматически идентифицирует рабочий лист, который принадлежит предыдущему из текущего рабочего листа.


Используйте/ссылочное значение из предыдущего рабочего листа с Kutools for Excel

Для Динамически обращаться к рабочим листам полезности Kutools for Excel, вы можете легко использовать или ссылаться на значение из предыдущего листа в Excel.

1. Если вы хотите связать значение ячейки A1 из предыдущего листа с текущим листом, выберите ячейку A1 в текущем листе и нажмите Кутулс > Больше > Динамически обращаться к рабочим листам. Смотрите скриншот:

2. в Заполнить рабочие листы Ссылки диалоговом окне, проверьте только предыдущее имя рабочего листа в Список рабочих листов поле, а затем щелкните Диапазон заполнения кнопку.

Затем вы можете увидеть, что значение ячейки A1 на предыдущем листе указано в текущем листе.

Внимание: С помощью этой утилиты вы можете одновременно ссылаться на одно и то же значение ячейки из разных листов в текущий лист.

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Используйте/ссылочное значение из предыдущего рабочего листа с Kutools for Excel


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (22)


Оценок пока нет. Оцените первым!

Ссылка на предыдущий лист.

ghost3085

Дата: Среда, 29.05.2013, 10:59 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 17


Репутация:

0

±

Замечаний:
0% ±


Помогите мне в такой проблеме.
У меня документ в нем сейчас около 10 листов. Каждый лист ссылается на пару ячеек предыдущего.
Примет: Лист2 ссылается на ячейку В2 и С5 листа1, Лист3 ссылается на В2 и С5 листа2 и тд.
Имена листов не известны. Как ссылаться на предыдущий лист???

 

Ответить

Serge_007

Дата: Среда, 29.05.2013, 11:19 |
Сообщение № 2

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Формулами — никак


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

ghost3085

Дата: Среда, 29.05.2013, 12:14 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 17


Репутация:

0

±

Замечаний:
0% ±


Можно и макросом. Желательно обьяснить. Или готовый макрос пришлите если не тяжело, а я его подгоню.
Заранее благодарю.

 

Ответить

ghost3085

Дата: Среда, 29.05.2013, 14:08 |
Сообщение № 4

Группа: Пользователи

Ранг: Новичок

Сообщений: 17


Репутация:

0

±

Замечаний:
0% ±


Я тут немного поклацал.
У меня 2 функции

Определяем имя листа
[vba]

Код

Function SheetName(iSheetNo As Long) As String
SheetName = Sheets(iSheetNo).Name
End Function

[/vba]

Определяем номер листа
[vba]

Код

Function SheetNo()
Application.Volatile
SheetNo = Application.Caller.Parent.Index
End Function

[/vba]

И, соответственно,

Код

=ДВССЫЛ(sheetname(sheetno()-1)&»!A1″)

В результате на чистом фале все работает, но когда переименовываю лист по типу 10-15,04 (с 10 по 15 апреля) в результате ЗНАЧ
Подскажите где копать????

[admin]Оформляйте коды тегами![/admin]

Сообщение отредактировал ghost3085Среда, 29.05.2013, 14:12

 

Ответить

AlexM

Дата: Среда, 29.05.2013, 14:11 |
Сообщение № 5

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Можно функцией пользователя.
Код поместить в Модуль1
[vba]

Код

Function PrevSheet(Cell As Range) As Variant
PrevSheet = Sheets(IIf(ActiveSheet.Index = 1, 1, ActiveSheet.Index — 1)).Range(Cell.Address)
End Function

[/vba]
Чтобы при изменении значений в ячейке, которая является аргументом функции, функция пересчитывалась надо к формуле добавить:
Если формула возвращает число +СЕГОДНЯ()*0, если формула возвращает текст &ЕСЛИ(СЕГОДНЯ()*0;;»»)
См.файл.

К сообщению приложен файл:

____.xls
(25.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

ghost3085

Дата: Четверг, 30.05.2013, 10:19 |
Сообщение № 6

Группа: Пользователи

Ранг: Новичок

Сообщений: 17


Репутация:

0

±

Замечаний:
0% ±


Спасибо!!
Теперь вопрос как зделать автоматическое обновление данных при перемещение по ячейкам??
Данные не обновляться пока не обновлю ячейку с формулой.

 

Ответить

AlexM

Дата: Четверг, 30.05.2013, 11:27 |
Сообщение № 7

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

В модуль «Эта книга» вставить код
[vba]

Код

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Sh.Calculate
End Sub

[/vba]



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

ghost3085

Дата: Четверг, 30.05.2013, 14:06 |
Сообщение № 8

Группа: Пользователи

Ранг: Новичок

Сообщений: 17


Репутация:

0

±

Замечаний:
0% ±


Может я конечно что-то не так зделал, но у меня не срабатывает.
Нужно чтоб обновлялись значения в ячейках автоматом как при обычних вычислениях.
Изначально эта задача для человека который не очень знает компьютер, поэтому вручную обновлять ячейки не очень удобно…

Сообщение отредактировал ghost3085Четверг, 30.05.2013, 14:11

 

Ответить

Serge_007

Дата: Четверг, 30.05.2013, 14:14 |
Сообщение № 9

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Цитата (ghost3085)

обновлялись значения в ячейках автоматом как при обычних вычислениях

Цитата (ghost3085)

автоматическое обновление данных при перемещение по ячейкам?

Так как надо: при пересчёте листа или при перемещении по ячейкам?


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

ghost3085

Дата: Пятница, 31.05.2013, 10:49 |
Сообщение № 10

Группа: Пользователи

Ранг: Новичок

Сообщений: 17


Репутация:

0

±

Замечаний:
0% ±


Извиняюсь что не корректно выразился.
Нужно автоматическое обновление данных/ссылок (как при обычных формулах)
поменял значение в ячейке — формула пересчитала автоматом…

 

Ответить

Serge_007

Дата: Пятница, 31.05.2013, 10:59 |
Сообщение № 11

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Цитата (ghost3085)

поменял значение в ячейке — формула пересчитала автоматом

Цитата (AlexM)

Чтобы при изменении значений в ячейке, которая является аргументом функции, функция пересчитывалась надо к формуле добавить:
Если формула возвращает число +СЕГОДНЯ()*0, если формула возвращает текст &ЕСЛИ(СЕГОДНЯ()*0;;»»)
См.файл.


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

AlexM

Дата: Пятница, 31.05.2013, 11:14 |
Сообщение № 12

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Еще раз выкладываю файл. Ссылки автоматически обновляются.

К сообщению приложен файл:

0424769.xls
(26.5 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

ghost3085

Дата: Понедельник, 03.06.2013, 10:40 |
Сообщение № 13

Группа: Пользователи

Ранг: Новичок

Сообщений: 17


Репутация:

0

±

Замечаний:
0% ±


Извиняюсь еще раз!!!
Вот пример моей задачи.
Подскажите что делать с этой проблемой.
Ссылки ссылаются на первый лист (по умолчанию), происходит дублирование, если обновить тогда пересчитует. Где копать?????
также возникает цикличиская ссылка….
Добавил!!!

К сообщению приложен файл:

2044838.xls
(97.5 Kb)

Сообщение отредактировал ghost3085Понедельник, 03.06.2013, 11:45

 

Ответить

AlexM

Дата: Понедельник, 03.06.2013, 10:45 |
Сообщение № 14

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

Решение было в сообщении №7
С циклической ссылкой не разобрался. Ошибка появляется только при сохранении файла.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

Сообщение отредактировал AlexMПонедельник, 03.06.2013, 12:34

 

Ответить

ghost3085

Дата: Понедельник, 03.06.2013, 14:26 |
Сообщение № 15

Группа: Пользователи

Ранг: Новичок

Сообщений: 17


Репутация:

0

±

Замечаний:
0% ±


Извиняюсь за мучения!!!!!
Большое спасибо. Все работает!!!!! Всем спасибо.

 

Ответить

Сергей

Дата: Пятница, 17.01.2014, 10:41 |
Сообщение № 16

Здраствуйте, у меня была такая же проблема, воспользовался вашим решением — работает, для работы циклической ссылки я включил итеративные вычисления, но при любых изменениях значения в ячейках со ссылкой «prevshit» сбиваются, и появляются несуществующие цифры, видимо это связано с тем, что циклическая может выдать неправильное значение, что она собственно и делает. как решить эту проблему? подскажите пожалуйста

 

Ответить

maeglah

Дата: Понедельник, 20.01.2014, 20:47 |
Сообщение № 17

Группа: Пользователи

Ранг: Прохожий

Сообщений: 1


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Бьюсь с той же проблемой, ИМХО циклические ссылки возникают при количестве листов с ссылками на предыдущий более 2 х.
Вот эта вот конструкция ActiveSheet.Index, дает нам индекс текущего листа.
При этом если мы откроем последний лист, который будет в данный момент как раз активным, для всех ячеек содержащих данную формул
он так же станет активным, формула замкнется на себя.
И этого может не случиться если листов будет всего два и первый из них будет содержать только стартовые данные.

Так что главный вопрос — как получить имя листа которому принадлежит вычисляемая ячейка для которой происходят вычисления не зависимо от активного в данный момент листа.

Сообщение отредактировал maeglahПонедельник, 20.01.2014, 20:48

 

Ответить

bygaga

Дата: Среда, 28.05.2014, 10:12 |
Сообщение № 18

Группа: Пользователи

Ранг: Форумчанин

Сообщений: 101


Репутация:

0

±

Замечаний:
0% ±


Excel 2003, 2007

Сообщение отредактировал bygagaСреда, 28.05.2014, 10:12

 

Ответить

acidlisk

Дата: Пятница, 19.09.2014, 10:18 |
Сообщение № 19

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

AlexM, а почему для пересчета функции надо добавлять +СЕГОДНЯ()*0 ?
Потому, что excel в любом случае будет считать функцию СЕГОДНЯ() и заодно все значение ячейки пересчитает, что ли? То есть по факту это костыль?

 

Ответить

Goorito

Дата: Четверг, 11.04.2019, 06:52 |
Сообщение № 20

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
20% ±


Excel 2016

Всем добра!

Господа профессионалы, нужна помощь профану)
Решил поднять эту тему.

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

Помогите пожалуйста с формулой…

К сообщению приложен файл:

6300319.xlsx
(23.4 Kb)

Сообщение отредактировал GooritoЧетверг, 11.04.2019, 06:53

 

Ответить

Хитрости »

20 Август 2020              3459 просмотров


Имя предыдущего листа

Иногда возникают ситуации, когда необходимо знать имя листа(текущего или на котором ссылка) — об этом я уже писал в статье Как получить имя листа формулой. Но куда сложнее ситуация с получением имени предыдущего листа. Т.е. имя того листа, который расположен перед тем листом, на котором записана формула. Зачем это может потребоваться? Например, если в книге ведут учет касс и каждый лист это отдельная дата. И в определенной ячейке необходимо получить данные по остаткам из предыдущего листа(дня).
Стандартные формулы(та же ЯЧЕЙКА(CELL)) могут это сделать, но в силу специфики получается так, что они бесполезны. В той же ЯЧЕЙКА для получения имени конкретного листа необходимо указать ссылку на ячейку на этом самом листе. Замкнутый круг. Ведь можно сразу указать эту ссылку. А если лист со ссылкой будет удален, то получим ошибку и ссылку надо будет перепрописывать заново.
А значит обычные формулы нам в автоматизации не помогут — такое возможно только через VBA. Лучше всего делать это при помощи функции пользователя(UDF). И главное, эта функция не так уж и сложна:

'---------------------------------------------------------------------------------------
' Author : Щербаков Дмитрий(The_Prist)
'          https://www.excel-vba.ru
'          info@excel-vba.ru
' Purpose: Функция возвращает имя листа, расположенного перед листом с функцией
'          Не требует аргументов
'          Если функция записана на первом по порядку листе - функция вернет ПУСТО
'---------------------------------------------------------------------------------------
Function GetPrevSheet_Name()
    'заставляем пересчитывать формулу при любом изменении
    Application.Volatile True
    Dim ws As Worksheet
    'получаем ссылку на лист, в котором записана формула
    Set ws = Application.Caller.Parent
    'если лист с формулой 2-ой или более по порядку
    If ws.Index > 1 Then
        'получаем имя предыдущего листа
        GetPrevSheet_Name = ws.Previous.Name
    Else
        GetPrevSheet_Name = vbNullString
    End If
End Function

Чтобы правильно использовать приведенный код, необходимо сначала ознакомиться со статьей Что такое функция пользователя(UDF)?. Вкратце: скопировать текст кода выше, перейти в редактор VBA(Alt+F11) -создать стандартный модуль(InsertModule) и в него вставить скопированный текст. После чего функцию можно будет вызвать из Диспетчера функций(Shift+F3), отыскав её в категории Определенные пользователем (User Defined Functions).
Синтаксис записи функции на лист:
=GetPrevSheet_Name()
Функция будет исправно работать даже если предыдущий лист будет удален — ведь она непосредственно на него никак на завязана.
Однако, сама по себе функция в таком виде не очень практична — она ничего не дает, кроме имени листа. Чтобы получить с её помощью значение конкретной ячейки предыдущего листа(пусть это будет ячейка «А1»), необходимо использовать функцию преобразования текстового представления адреса в реальный — ДВССЫЛ(INDIRECT):
=ДВССЫЛ(«‘»&GetPrevSheet_Name()&»‘!A1»)
=INDIRECT(«‘»&GetPrevSheet_Name()&»‘!A1»)
Формула не очень наглядна, хоть и не сложна. Самое непонятное здесь, наверное, это апострофы. Я добавил их до и после имени листа на тот случай, если в имени листа будут различные знаки препинания и другие «неугодные» именам листов символы(пробел в том числе). В этом случае апострофы обязательны, но они никак не мешают, если никаких символов нет.
Но даже в связке с ДВССЫЛ(INDIRECT) наиболее часто функция будет использоваться для получения значения одной конкретной ячейки(как в примере выше). И куда реже в составе каких-либо других функций(ИНДЕКС, ВПР и т.п.), требующих указания диапазонов. Поэтому было бы неправильно, если бы я не привел в статье функцию, которая сразу делает именно нужное — возвращает значение указанной ячейки из предыдущего листа:

'---------------------------------------------------------------------------------------
' Author : Щербаков Дмитрий(The_Prist)
'          https://www.excel-vba.ru
'          info@excel-vba.ru
' Purpose: Функция возвращает значение указанной ячейки на предыдущем листе
'          Если функция записана на первом по порядку листе - функция вернет ошибку ЗНАЧ!
'          Аргументы:
'              rc - ссылка на ячейку на текущем листе,
'                   по адресу которой необходимо получить значение из предыдущего листа
'---------------------------------------------------------------------------------------
Function GetPrevSheet_Value(Optional rc As Range)
    'заставляем пересчитывать формулу при любом изменении
    Application.Volatile True
    Dim rCell As Range
    If rc Is Nothing Then
        Set rCell = Application.Caller
    Else
        Set rCell = rc
    End If
    Dim ws As Worksheet
    'получаем ссылку на лист, в котором записана формула
    Set ws = Application.Caller.Parent
    'если лист с формулой 2-ой или более по порядку
    If ws.Index > 1 Then
        'получаем значение из предыдущего листа
        'на основании адреса указанной ячейки
        GetPrevSheet_Value = ws.Previous.Range(rCell.Address).Value
    Else
        GetPrevSheet_Value = CVErr(xlErrValue)
    End If
End Function

Используется функция так же, как и предыдущая.
Синтаксис записи на листе для получения значения ячейки А1 из предыдущего листа:
=GetPrevSheet_Value(A1)
Если надо получить из предыдущего листа значение ячейки, адрес которой равен адресу ячейки, в которую введена сама функция:
=GetPrevSheet_Value()
Если функция записана на первом по порядку листе, то результатом будет значение ошибки #ЗНАЧ!(#VALUE!)


Значение из предыдущего листа нужно получать куда чаще, чем из следующего. Но раз есть одно — нужно и другое. Функции ниже получают имя и значение ячейки следующего листа:

'---------------------------------------------------------------------------------------
' Author : Щербаков Дмитрий(The_Prist)
'          https://www.excel-vba.ru
'          info@excel-vba.ru
' Purpose: Функция возвращает имя листа, расположенного после листа с функцией
'          Не требует аргументов
'          Если функция записана на первом по порядку листе - функция вернет ПУСТО
'---------------------------------------------------------------------------------------
Function GetNextSheet_Name()
    'заставляем пересчитывать формулу при любом изменении
    Application.Volatile True
    Dim ws As Worksheet
    'получаем ссылку на лист, в котором записана формула
    Set ws = Application.Caller.Parent
    'если лист с формулой не последний
    If ws.Index < ws.Parent.Worksheets.Count Then
        'получаем имя предыдущего листа
        GetNextSheet_Name = ws.Next.Name
    Else
        GetNextSheet_Name = vbNullString
    End If
End Function
'---------------------------------------------------------------------------------------
' Author : Щербаков Дмитрий(The_Prist)
'          https://www.excel-vba.ru
'          info@excel-vba.ru
' Purpose: Функция возвращает значение указанной ячейки на предыдущем листе
'          Если функция записана на первом по порядку листе - функция вернет ошибку ЗНАЧ!
'          Аргументы:
'              rc - ссылка на ячейку на текущем листе,
'                   по адресу которой необходимо получить значение из предыдущего листа
'---------------------------------------------------------------------------------------
Function GetNextSheet_Value(Optional rc As Range)
    'заставляем пересчитывать формулу при любом изменении
    Application.Volatile True
    Dim rCell As Range
    If rc Is Nothing Then
        Set rCell = Application.Caller
    Else
        Set rCell = rc
    End If
    Dim ws As Worksheet
    'получаем ссылку на лист, в котором записана формула
    Set ws = Application.Caller.Parent
    'если лист с формулой не последний
    If ws.Index < ws.Parent.Worksheets.Count Then
        'получаем значение из предыдущего листа
        'на основании адреса указанной ячейки
        GetNextSheet_Value = ws.Next.Range(rCell.Address).Value
    Else
        GetNextSheet_Value = CVErr(xlErrValue)
    End If
End Function

Скачать файл пример:

  Имя предыдущего листа.xls (85,5 KiB, 513 скачиваний)

Так же см.:
Как получить имя листа формулой


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

0 / 0 / 0

Регистрация: 11.08.2016

Сообщений: 4

1

Как в книге проставить формулу со ссылкой на предыдущий лист

11.08.2016, 15:00. Показов 14314. Ответов 10


Студворк — интернет-сервис помощи студентам

Здравствуйте! Нужна помощь. Есть книга, выбираю ячейку и хочу проставить формулу =’1′!G44:H45+E44, на каждый лист в определённую ячейку и главное со ссылкой на предыдущий лист. Т.е. вопрос: что надо сделать, чтобы во всю сразу книгу вставить формулу в которой есть ссылка на пред.лист? Спасибо



0



2640 / 1697 / 694

Регистрация: 04.09.2015

Сообщений: 3,367

11.08.2016, 15:45

2

0115432, Зачем вам такая формула в ячейке? Формула вернет значение ошибки.
Приложите файл с реальными названиями листов. В файле покажите что нужно сделать. Возможно найдется решение.



0



0 / 0 / 0

Регистрация: 11.08.2016

Сообщений: 4

11.08.2016, 16:38

 [ТС]

3

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



0



2640 / 1697 / 694

Регистрация: 04.09.2015

Сообщений: 3,367

11.08.2016, 17:47

4

Так надо?
PS. формулы типа

надо писать так

т.е. указывать верхнюю левую ячейку объединенной ячейки. Иначе возврачается не одно значение, а диапазон, типа {3;0:0;0}



0



0 / 0 / 0

Регистрация: 11.08.2016

Сообщений: 4

11.08.2016, 18:10

 [ТС]

5

да, хорошо, но особо волнует именно вами выделенная

Цитата
Сообщение от AlexM
Посмотреть сообщение

‘1’

, понимаете? на третьем листе она должна стать ‘2’, на четвертом ‘3’, на 198 надо ‘197’… как заменить то, что в этих кавычках на универсально понятное екселю =’

предыдущий лист

‘!G44+E44 ?



0



2640 / 1697 / 694

Регистрация: 04.09.2015

Сообщений: 3,367

11.08.2016, 18:15

6

Лучший ответ Сообщение было отмечено 0115432 как решение

Решение

Вы откройте файл и изучите формулы. Я ваши формулы с ссылкой на предыдущий лист заменил все. Имя предыдущего листа получаем формулой

Код

ПСТР(ЯЧЕЙКА("имяфайла";A1);ПОИСК("]";ЯЧЕЙКА("имяфайла";A1))+1;255)-1



2



0 / 0 / 0

Регистрация: 11.08.2016

Сообщений: 4

11.08.2016, 18:39

 [ТС]

7

прошу прощения! Спасибо вам огромное! работает! пойду изучать как вы это сделали



0



0 / 0 / 0

Регистрация: 27.08.2018

Сообщений: 10

06.11.2018, 18:21

8

Подскажите, а если название листов заданы не числами, а словами или вот названиями месяцев хотя бы (типа: «январь», «февраль» и т.д.), возможно ли тогда получить ссылку на предыдущий лист?



0



0 / 0 / 0

Регистрация: 08.04.2019

Сообщений: 2

08.04.2019, 07:55

9

Всем добра!

Господа профессионалы, нужна помощь профану)

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

Помогите пожалуйста с формулой…



0



2640 / 1697 / 694

Регистрация: 04.09.2015

Сообщений: 3,367

08.04.2019, 10:25

10

Goorito, если вам не подходит решение из этой темы, то ваша задача отличается от этой. Создайте свою тему.

Добавлено через 11 минут
А решение не подходит, потому что в вашей книге название листов текст, а в формула работает, когда название листов числа, причем листы названы по возрастанию чисел.



0



0 / 0 / 0

Регистрация: 08.04.2019

Сообщений: 2

11.04.2019, 06:55

11

ок спс



0



Ссылка на другой лист с помощью ДВССЫЛ

Задача: вам нужно получить значение ячейки B4 с одного из многих листов. При этом, определить, с какого именно листа вы можете на основании расчета. Может ли ДВССЫЛ ссылаться на другой лист?

Решение: ДВССЫЛ может ссылаться на другой лист. Но функция требует особого обращения, если имя листа содержит пробелы или дату. Если лист содержит пробел в имени, вы должны составить ссылку на лист, используя апострофы вокруг имени листа, затем восклицательный знак и адрес ячейки (см. также Сумма одной и той же ячейки на нескольких листах). Например, = ‘ Прибыли и убытки ‘ !В2. Если имя листа не содержит пробелы, вы можете обойтись без апострофов: =Доходы!В2. Если у вас смесь имен листов, некоторые из которых содержат пробелы, в формуле вы должны спланировать апострофы (рис. 1).

Рис. 1. ДВССЫЛ ссылается на переменный лист

Рис. 1. ДВССЫЛ ссылается на переменный лист

Скачать заметку в формате Word или pdf, примеры в формате Excel

Формула в ячейке F4: =ДВССЫЛ( » ‘ » &F$3& » ‘ ! » & » B4 » ). Первый частокол из апострофов – это открывающие кавычки » + апостроф ‘ + закрывающие кавычки » . Второй частокол – это открывающие кавычки » + два символа: апостроф и восклицательный знак ‘ ! + закрывающие кавычки » .

Проблема с формулами в четвертой строке в том, что они жестко ссылаются на В4, поэтому при копировании в строки с 5 по 7 они становятся не релевантными. Чтобы формулы могли ссылаться на данные из других строк, можно использовать функции ЯЧЕЙКА или АДРЕС. Вы можете приспособить функцию ЯЧЕЙКА в считанные секунды, но функция АДРЕС может, в конечном счете, оказаться более удобной, как только вы поймете нюансы ее использования.

Фрагмент формулы ЯЧЕЙКА( » адрес » ;$B5) возвращает текст $В$5, что удачно подходит для аргумента функции ДВССЫЛ (рис. 2). Знак доллара перед буквой В позаботится о том, чтобы формула на всех листах ссылалась на столбец В. Отсутствие знака доллара перед цифрой 5 позволит при копировании формулы вниз по столбцу ссылаться на строки 5, 6, 7… Формула в ячейке F5: =ДВССЫЛ( » ‘ » &F$3& » ‘ ! » &ЯЧЕЙКА( » адрес » ;$B5)).

Рис. 2. Добавление функции ЯЧЕЙКА позволяет скопировать формулу на всю таблицу

Рис. 2. Добавление функции ЯЧЕЙКА позволяет скопировать формулу на всю таблицу

Вы можете использовать функцию АДРЕС вместо функции ЯЧЕЙКА. В своей простейшей форме –АДРЕС(номер_строки; номер_столбца) – функция возвращает адрес ячейки. Например, =АДРЕС(5, 2) возвращает текст $В$5. Может показаться странным писать =АДРЕС(СТРОКА(),2) вместо более простого и короткого ЯЧЕЙКА( » адрес » ;$B5), когда вы хотите сослаться на столбец B в текущей строке. Однако, функция АДРЕС имеет три дополнительных необязательных аргумента.

Примечание: третий и четвертый аргументы функции АДРЕС в этой теме вас не интересуют, но вы должны разобраться с ними, чтобы добраться до пятого аргумента.

Третий аргумент определяет, тип ссылки, т.е., какие ссылку будут абсолютными, а какие относительными (подробнее см. Относительные, абсолютные и смешанные ссылки на ячейки в Excel). Вот простой способ запомнить, как работает этот аргумент. Число в аргументе соответствует тому, сколько раз вы нажмите клавишу F4, чтобы добиться комбинации знаков доллара:

  • АДРЕС(5;2;1) – фиксирует, как столбец, так и строку, и возвращает $B$5;
  • АДРЕС(5;2;1) – фиксирует только строку, и возвращает B$5;
  • АДРЕС(5;2;1) – фиксирует только столбец, и возвращает $B5;
  • АДРЕС(5;2;1) – оставляет обе ссылки относительными, и возвращает B5.

Четвертый аргумент определяет стиль ссылки:

  • АДРЕС(5;2;1;1) – возвращает ссылку в стиле А1 – $В$5;
  • АДРЕС(5;2;1;0) – возвращает ссылку в стиле R1C1 – R5C2.

Пятый аргумент определяет имя листа. Excel сам проанализирует синтаксис имени, и определит, нужны ли апострофы:

  • =АДРЕС(5;2;4;1; » Atlanta » ) вернет Atlanta!B5;
  • =АДРЕС(5;2;4;1; » Eden Prairie » ) вернет ‘ Eden Prairie ‘ !B5

Примечание: на самом деле вы не обязаны помнить, какие параметры нужны для третьего и четвертого аргументов функции АДРЕС. Просто пропустите их (рис. 3). Например, формула =АДРЕС(5;2;;; » Eden Prairie » ) вернет значение ‘ Eden Prairie ‘ !$B$5.

Рис. 3. Аргументы функции АДРЕС

Рис. 3. Аргументы функции АДРЕС

Функция АДРЕС с использованием пятого аргумента возвращает текст, который может быть использован в функции ДВССЫЛ (рис. 4). Формула в ячейке D6: =ДВССЫЛ(АДРЕС(СТРОКА();2;;;D$3)). Эта формула также может быть скопирована на всю таблицу. Первый аргумент в АДРЕС – СТРОКА() – гарантирует, что Excel извлекает значение из строки с тем же номером, что и формула. Второй аргумент фиксирован – это 2. Т.е., всегда получите столбец B. Третий и четвертый аргументы опущены, что говорит функции АДРЕС вернуть абсолютные ссылки в стиле А1. Пятый аргумент содержит знак доллара только перед строкой, что сохранит релевантность формулы при ее копировании вдоль столбца: при этом будет сохранятся ссылка на имя листа (из третьей строки). При копировании же вдоль строки ссылка будет меняется с переходом от столбца к столбцу (попробуйте в приложенном файле Excel).

Рис. 4. Альтернативный вариант с функцией АДРЕС

Рис. 4. Альтернативный вариант с функцией АДРЕС

Дополнительные сведения: функция ДВССЫЛ может работать и со ссылками в стиле R1C1. Часто это упрощает создание формул. До сих пор мы во всех примерах функция ДВССЫЛ использовала только первый аргумент (второй аргумент был опущен), например, ДВССЫЛ( » В4 » ). Эта формула вернет такое же значение при использовании в качестве второго аргумента значения ИСТИНА: ДВССЫЛ( » В4 » ; ИСТИНА). Последняя формула явно предписывает функции ДВССЫЛ использовать стиль ссылок А1. Значение ЛОЖЬ в качестве второго аргумента – ДВССЫЛ( » В4 » ; ЛОЖЬ) – предписывает интерпретировать ссылки в стиле R1C1.

Ссылка =RC указывает на текущую строку и текущий столбец. Числе после R или C создает абсолютную ссылку на определенную строку или столбец. Так, например, формула =RC2 ссылается на столбец B из того же ряда. Если вы используете ссылки в стиле R1C1, вам не понадобятся функции ЯЧЕЙКА или АДРЕС (рис. 5). Здесь в ячейке С7 формула =ДВССЫЛ( » ‘ » &C$3& » ‘ !RC2 » ;ЛОЖЬ). Эта формула также может быть скопирована по всей таблице. Обратите внимание, что вам не придется переключаться на использование на листе ссылок в стиле R1C1 для того, чтобы воспользоваться этой формулой.

Рис. 5. Стиль R1C1 не популярен, но он, безусловно, значительно облегчает написание формул

Рис. 5. Стиль R1C1 не популярен, но он, безусловно, значительно облегчает написание формул

Как в книге проставить формулу со ссылкой на предыдущий лист

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как создать новый лист в книге со ссылкой на предыдущий лист?
Добрый день. Есть реестр учета спецтехники. Его заполняет диспетчер каждый день. т.е. каждый день.

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

Как найти в книге формулу с недопустимыми ссылками
Добрый день! у меня выскакивает ошибка (см рис) функция «проверка наличия ошибок не.

Как в рабочей книге добавить лист и назвать его по своей фамилии
Нужен макрос. Суть такова: в рабочей книге добавить лист и назвать его по своей фамилии. На этот.

Вложения

шаблон 1.xlsx (63.6 Кб, 37 просмотров)

Вложения

шаблон 1.xls (98.0 Кб, 93 просмотров)

Сообщение от AlexM
Сообщение было отмечено 0115432 как решение

Решение

Господа профессионалы, нужна помощь профану)

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

Помогите пожалуйста с формулой.

Вложения

бар отчет.xlsx (23.4 Кб, 17 просмотров)

Goorito, если вам не подходит решение из этой темы, то ваша задача отличается от этой. Создайте свою тему.

Добавлено через 11 минут
А решение не подходит, потому что в вашей книге название листов текст, а в формула работает, когда название листов числа, причем листы названы по возрастанию чисел.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как закрыть паролем отдельный лист в защищенный книге Excel-2003
Есть защищеная книга в Excel-2003, состоящая из некоторого кол-ва отдлельных листов. Как сделать.

Вернуться на предыдущий лист
Здравстуйте ув. форумчане. произошел у меня затык в макросе. Мне нужно обратится к определенному.

Подскажтие, как объединить книги, чтобы формулы ссылались на лист в объединенной книге
Здравствуйте! Подскажите пожалуйста, как осуществить следующее. Была книга Kniga с листом.

Формирование ссылки макросом на предыдущий лист
Всем доброго времени суток. Есть файл с листами январь, февраль и т.д. Для примера необходимо на.

Skip to content

Как использовать функцию ДВССЫЛ – примеры формул

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

В Microsoft Excel существует множество функций, некоторые из которых просты для понимания, другие требуют длительного обучения. При этом первые используются чаще, чем вторые. И тем не менее, функция Excel ДВССЫЛ  (INDIRECT на английском) является единственной в своем роде. Эта функция Excel не выполняет никаких вычислений, не оценивает никаких условий не ищет значения.

Итак, что такое функция ДВССЫЛ (INDIRECT) в Excel и для чего ее можно использовать? Это очень хороший вопрос, и, надеюсь, вы получите исчерпывающий ответ через несколько минут, когда закончите чтение.

Функция ДВССЫЛ в Excel — синтаксис и основные способы использования

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

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

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

ДВССЫЛ(ссылка_на_ячейку; [a1])

ссылка_на_ячейку – это адрес нужной ячейки в виде текстовой строки, либо названия именованного диапазона.

a1 — логическое значение, указывающее, какой тип ссылки содержится в первом аргументе:

  • Если значение ИСТИНА или опущено, то используется ссылка на ячейку в стиле A1.
  • Если ЛОЖЬ, то возвращается ссылка в виде R1C1.

Таким образом, ДВССЫЛ возвращает либо ссылку на ячейку, либо ссылку на диапазон.

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

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

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

Предположим, у вас есть число 5 в ячейке A1 и текст «A1» в ячейке C1. Теперь поместите формулу =ДВССЫЛ(C1) в любую другую ячейку и посмотрите, что произойдет:

  • Функция ДВССЫЛ обращается к значению в ячейке C1. Там в виде текстовой строки записан адрес «A1».
  • Функция ДВССЫЛ направляется по этому адресу в ячейку A1, откуда извлекает записанное в ней значение, то есть число 555.

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

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

Формула   ДВССЫЛ(C1&»:»&C2) извлекает адреса из указанных ячеек и превращается в =ДВССЫЛ(«A1:A5»).

В итоге мы получаем ссылку =A1:A5

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

Как использовать ДВССЫЛ в Excel — примеры формул

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

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

Создание косвенных ссылок из значений ячеек

Как вы помните, функция ДВССЫЛ в Excel позволяет использовать стили ссылок A1 и R1C1. Обычно вы не можете использовать оба стиля на одном листе одновременно. Вы можете переключаться между двумя типами ссылок только с помощью опции «Файл» > «Параметры» > «Формулы» > R1C1 . По этой причине пользователи Excel редко рассматривают использование R1C1 в качестве альтернативного подхода к созданию ссылок.

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

Стиль A1 — это обычный и привычный всем нам тип адресации в Excel, который указывает сначала столбец, за которым следует номер строки. Например, B2 обозначает ячейку на пересечении столбца B и строки 2.

Стиль R1C1 является обозначает координаты ячейки наоборот – за строками следуют столбцы, и к этому нужно привыкнуть:) Например, R5C1 относится к ячейке A5, которая находится в строке 5, столбце 1 на листе. Если после буквы не следует какая-либо цифра, значит, вы имеете в виду ту же строку или столбец, в которых записана сама формула.

А теперь давайте сравним на простом примере, как функция ДВССЫЛ обрабатывает адреса вида A1 и R1C1:

Как вы видите на скриншоте выше, две разные формулы возвращают один и тот же результат. Вы уже поняли, почему? 

  • Формула в ячейке D1:   =ДВССЫЛ(C1)

Это самый простой вариант. Формула обращается к ячейке C1, извлекает ее значение — текстовую строку «A2» , преобразует ее в ссылку на ячейку, переходит к ячейке A2 и возвращает ее значение, равное 456.

  • Формула в ячейке D3:  =ДВССЫЛ(C3;ЛОЖЬ)

ЛОЖЬ во втором аргументе указывает, что указанное значение (C3) следует рассматривать как ссылку на ячейку в формате R1C1, т. е. сначала идет номер строки, за которым следует номер столбца. Таким образом, наша формула ДВССЫЛ интерпретирует значение в ячейке C3 (R2C1) как ссылку на ячейку на пересечении строки 2 и столбца 1, которая как раз и является ячейкой A2.

Создание ссылок из значений ячеек и текста

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

В следующем примере формула =ДВССЫЛ(«А»&C1) возвращает значение из ячейки А1 на основе следующей логической цепочки:

Функция ДВССЫЛ объединяет элементы в первом аргументе ссылка_на_ячейку — текст «А» и значение из ячейки C1. Значение в C1 – это число 1, что в результате формирует адрес А1. Формула переходит к ячейке А1 и возвращает ее значение – 555.

Использование функции ДВССЫЛ с именованными диапазонами

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

Предположим, у вас есть следующие именованные диапазоны на вашем листе:

  • Яблоки – С2:E2
  • Лимоны — C3: E3
  • Апельсины – C4:E4 и так далее по каждому товару.

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

А теперь вы можете сделать еще один шаг и вложить эту формулу в другие функции Excel. Например, попробуем вычислить сумму и среднее значений в заданном именованном диапазоне или найти максимальную и минимальную сумму продаж в нём, как это сделано на скриншоте ниже:

  • =СУММ(ДВССЫЛ (H1))
  • =СРЗНАЧ(ДВССЫЛ (H1))
  • =МАКС(ДВССЫЛ (H1))
  • =МИН(ДВССЫЛ (H1))

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

ДВССЫЛ для ссылки на другой рабочий лист

Полезность функции Excel ДВССЫЛ не ограничивается созданием «динамических» ссылок на ячейки. Вы также можете использовать ее для формирования ссылки на другие листы.

Предположим, у вас есть важные данные на листе 1, и вы хотите получить эти данные на листе 2. На скриншоте ниже показано, как можно справиться с этой задачей.

Нам поможет формула:

=ДВССЫЛ(«‘»&A2&»‘!»&B2&C2)

Давайте разбираться, как работает эта формула.

Как вы знаете, обычным способом сослаться на другой лист в Excel является указание имени этого листа, за которым следуют восклицательный знак и ссылка на ячейку или диапазон, например Лист1!A1:С10. Так как имя листа часто содержит пробелы, вам лучше заключить его (имя, а не пробел :) в одинарные кавычки, чтобы предотвратить возможную ошибку, например,

‘Лист 1!’$A$1 или для диапазона – ‘Лист 1!’$A$1:$С$10 .

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

  • записать имя листа в одну ячейку,
  • букву столбца – в другую,
  • номер строки – в третью,  
  • объединить всё это в одну текстовую строку,
  • передать этот адрес функции ДВССЫЛ. 

Помните, что в текстовой строке вы должны заключать каждый элемент, кроме номера строки, в двойные кавычки и затем связать все элементы в единое целое с помощью оператора объединения (&).

С учетом вышеизложенного получаем шаблон ДВССЫЛ для создания ссылки на другой лист:

ДВССЫЛ («‘» & имялиста & «‘!» & имя столбца нужной ячейки & номер строки нужной ячейки )

Возвращаясь к нашему примеру, вы помещаете имя листа в ячейку A2 и вводите адреса столбца и строки в B2 и С2, как показано на скриншоте выше. В результате вы получите следующую формулу:

ДВССЫЛ(«‘»&A2&»‘!»&B2&C2)

Кроме того, обратите внимание, что если вы копируете формулу в несколько ячеек, вам необходимо зафиксировать ссылку на имя листа, используя абсолютные ссылки на ячейки, например $A$2.

Замечание.

  • Если какая-либо из ячеек, содержащих имя листа и адреса ячеек (A2, B2 и c2 в приведенной выше формуле), будет пуста, ваша формула вернет ошибку. Чтобы предотвратить это, вы можете обернуть функцию ДВССЫЛ в функцию ЕСЛИ :

ЕСЛИ(ИЛИ(A2=»»;B2=»»;C2-“”); «»; ДВССЫЛ(«‘»&A2&»‘!»&B2&C2)

  • Чтобы формула ДВССЫЛ, ссылающаяся на другой лист, работала правильно, указанный лист должен быть открыт в Экселе, иначе формула вернет ошибку #ССЫЛКА. Чтобы не видеть сообщение об ошибке, которое может портить вид вашей таблицы, вы можете использовать функцию ЕСЛИОШИБКА, которая будет отображать пустую строку при любой возникшей ошибке:

ЕСЛИОШИБКА(ДВССЫЛ(«‘»&A2&»‘!»&B2&C2); «»)

Формула ДВССЫЛ для ссылки на другую книгу Excel

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

Чтобы упростить задачу, давайте начнем с создания ссылки на другую книгу обычным способом (апострофы добавляются, если имена вашей книги и/или листа содержат пробелы):
‘[Имя_книги.xlsx]Имя_листа’!Арес_ячейки

Но, чтобы формула была универсальной, лучше апострофы добавлять всегда – лишними не будут .

Предполагая, что название книги находится в ячейке A2, имя листа — в B2, а адрес ячейки — в C2 и D2, мы получаем следующую формулу:

=ДВССЫЛ(«‘[«&$A$2&».xlsx]»&$B$2&»‘!»&C2&D2)

Поскольку вы не хотите, чтобы ячейки, содержащие имена книг и листов, изменялись при копировании формулы в другие ячейки, вы можете зафиксировать их, используя абсолютные ссылки на ячейки – $A$2 и $B$2 соответственно.

Если адреса ячеек заменить их значениями, то мы получим такой промежуточный результат:

=ДВССЫЛ(«‘[INDIRECT.xlsx]Продажи’!D3»)

Ну а итоговый результат вы видите на скриншоте ниже.

Hbc6

И теперь вы можете легко создать собственную динамическую ссылку на другую книгу Excel, используя следующий шаблон:

=ДВССЫЛ(«‘[» & Название книги & «]» & Имя листа & «‘!» & Адрес ячейки )

Примечание. Рабочая книга, на которую ссылается ваша формула, всегда должна быть открыта, иначе функция ДВССЫЛ выдаст ошибку #ССЫЛКА. Как обычно, функция ЕСЛИОШИБКА может помочь вам избежать этого:

=ЕСЛИОШИБКА(ДВССЫЛ(«‘[«&$A$2&».xlsx]»&$B$2&»‘!»&C2&D2); «»)

Использование функции Excel ДВССЫЛ чтобы зафиксировать ссылку на ячейку

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

Чтобы проиллюстрировать разницу, сделайте следующее:

  1. Введите любое значение в любую ячейку, например, число 555 в ячейку A1.
  2. Обратитесь к A1 из двух других ячеек тремя различными способами: =A1, =ДВССЫЛ(«A1») и ДВССЫЛ(С1), где в С1 записан адрес «А1».
  3. Вставьте новую строку над строкой 1.

Видите, что происходит? Ячейка с логическим оператором =А1 по-прежнему возвращает 555, потому что ее формула была автоматически изменена на =A2 после вставки строки. Ячейки с формулой ДВССЫЛ теперь возвращают нули, потому что формулы в них не изменились при вставке новой строки и они по-прежнему ссылаются на ячейку A1, которая в настоящее время пуста:

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

Предположим, вы хотите просуммировать значения в ячейках A2:A5, и вы можете легко сделать это с помощью функции СУММ:

=СУММ(A2:A5)

Однако вы хотите, чтобы формула оставалась неизменной, независимо от того, сколько строк было удалено или вставлено. Самое очевидное решение — использование абсолютных ссылок — не поможет. Чтобы убедиться, введите формулу =СУММ($A$2:$A$5) в какую-нибудь ячейку, вставьте новую строку, скажем, в строку 3, и увидите формулу, преобразованную в =СУММ($A$2:$A$6).

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

Решение состоит в использовании функции ДВССЫЛ, например:

=СУММ(ДВССЫЛ(«A2:A5»))

Поскольку Excel воспринимает «A1: A5» как простую текстовую строку, а не как ссылку на диапазон, он не будет вносить никаких изменений при вставке или удалении строки (строк), а также при их сортировке.

Использование ДВССЫЛ с другими функциями Excel

Помимо СУММ, ДВССЫЛ часто используется с другими функциями Excel, такими как СТРОКА, СТОЛБEЦ, АДРЕС, ВПР, СУММЕСЛИ и т. д.

Пример 1. Функции ДВССЫЛ и СТРОКА

Довольно часто функция СТРОКА используется в Excel для возврата массива значений. Например, вы можете использовать следующую формулу массива (помните, что для этого нужно нажать Ctrl + Shift + Enter), чтобы вернуть среднее значение трех наименьших чисел в диапазоне B2:B13

{=СРЗНАЧ(НАИМЕНЬШИЙ(B2:B13;СТРОКА(1:3)))}

Однако, если вы вставите новую строку в свой рабочий лист где-нибудь между строками 1 и 3, диапазон в функции СТРОКА изменится на СТРОКА(1:4), и формула вернет среднее значение четырёх наименьших чисел вместо трёх.

Чтобы этого не произошло, вставьте ДВССЫЛ в функцию СТРОКА, и ваша формула массива всегда будет оставаться правильной, независимо от того, сколько строк будет вставлено или удалено:

={СРЗНАЧ(НАИМЕНЬШИЙ(B2:B13;СТРОКА(ДВССЫЛ(«1:3»))))}

Аналогично, если нам нужно найти сумму трёх наибольших значений, можно использовать ДВССЫЛ вместе с функцией СУММПРОИЗВ.

Вот пример:

={СУММПРОИЗВ(НАИБОЛЬШИЙ(B2:B13;СТРОКА(ДВССЫЛ(«1:3»))))}

А чтобы указать переменное количество значений, которое мы хотим сосчитать, можно это число вынести в отдельную ячейку. К примеру, в С1 запишем цифру 3. Тогда формулу можно изменить таким образом:

={СУММПРОИЗВ(НАИБОЛЬШИЙ(B2:B13;СТРОКА(ДВССЫЛ(«1:»&C1))))}

Согласитесь, что получается достаточно гибкий расчёт.

Пример 2. Функции ДВССЫЛ и АДРЕС

Вы можете использовать Excel ДВССЫЛ вместе с функцией АДРЕС, чтобы получить значение в определенной ячейке на лету.

Как вы помните, функция АДРЕС используется в Excel для получения адреса ячейки по номерам строк и столбцов. Например, формула =АДРЕС(1;3) возвращает текстовую строку «$C$1», поскольку C1 — это ячейка на пересечении 1-й строки и 3-го столбца.

Чтобы создать ссылку на ячейку, вы просто встраиваете функцию АДРЕС в формулу ДВССЫЛ, например:

=ДВССЫЛ(АДРЕС(1;3))

Конечно, эта несложная формула лишь демонстрирует технику. Более сложные примеры использования функций ДВССЫЛ И АДРЕС в Excel см. в статье Как преобразовать строки в столбцы в Excel .

И вот еще несколько примеров формул в которых используется функция ДВССЫЛ, и которые могут оказаться полезными:

  • ВПР и ДВССЫЛ — как динамически извлекать данные из разных таблиц (см. пример 2).
  • Excel ДВССЫЛ и СЧЁТЕСЛИ — как использовать функцию СЧЁТЕСЛИ в несмежном диапазоне или нескольких выбранных ячейках.

Использование ДВССЫЛ для создания выпадающих списков

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

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

В ячейке А1 вы создаете простой выпадающий список с названиями имеющихся именованных диапазонов. Для второго зависимого выпадающего списка в ячейке В2 вы используете простую формулу  =ДВССЫЛ(A1), где A1 — это ячейка, в которой выбрано имя нужного именованного диапазона.

К примеру, выбрав в первом списке второй квартал, во втором списке мы видим месяцы этого квартала.

Рис9

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

Подробное пошаговое руководство по использованию ДВССЫЛ с проверкой данных Excel смотрите в этом руководстве: Как создать зависимый раскрывающийся список в Excel.

Функция ДВССЫЛ Excel — возможные ошибки и проблемы

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

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

Ошибка #ССЫЛКА! 

Чаще всего функция ДВССЫЛ возвращает ошибку #ССЫЛКА!  в следующих случаях:

  1. Аргумент ссылка_на_ячейку не является допустимой ссылкой Excel. Если вы пытаетесь передать функции текст, который не может обозначать ссылку на ячейку (например, «A1B0»), то формула приведет к ошибке #ССЫЛКА!. Во избежание возможных проблем проверьте аргументы функции ДВССЫЛ .
  2. Превышен предел размера диапазона. Если аргумент ссылка_на_ячейку вашей формулы ДВССЫЛ ссылается на диапазон ячеек за пределами строки  1 048 576 или столбца  16 384, вы также получите ошибку #ССЫЛКА в Excel 2007 и новее. Более ранние версии Excel игнорируют превышение этого лимита и действительно возвращают некоторое значение, хотя часто не то, что вы ожидаете.
  3. Используемый в формуле лист или рабочая книга закрыты.Если ваша формула с ДВССЫЛ адресуется на другую книгу или лист Excel, то эта другая книга или электронная таблица должны быть открыты, иначе ДВССЫЛ возвращает ошибку #ССЫЛКА! . Впрочем, это требование характерно для всех формул, которые ссылаются на другие рабочие книги Excel.

Ошибка #ИМЯ? 

Это самый очевидный случай, подразумевающий, что в названии функции есть какая-то ошибка.

Ошибка из-за несовпадения региональных настроек.

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

В европейских странах запятая зарезервирована как десятичный символ, а в качестве разделителя списка используется точка с запятой.

В стандартной конфигурации Windows для Северной Америки и некоторых других стран разделителем списка по умолчанию является запятая. 

В результате при копировании формулы между двумя разными языковыми стандартами Excel вы можете получить сообщение об ошибке « Мы обнаружили проблему с этой формулой… », поскольку разделитель списка, используемый в формуле, отличается от того, что установлен на вашем компьютере. Если вы столкнулись с этой ошибкой при копировании какой-либо НЕПРЯМОЙ формулы из этого руководства в Excel, просто замените все запятые (,) точками с запятой (;) (либо наоборот). В обычных формулах Excel эта проблема, естественно, не возникнет. Там Excel сам поменяет разделители исходя из ваших текущих региональных настроек.

Чтобы проверить, какие разделитель списка и десятичный знак установлены на вашем компьютере, откройте панель управления и перейдите в раздел «Регион и язык» > «Дополнительные настройки».

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

Вот еще несколько статей по той же теме:

Как удалить сразу несколько гиперссылок В этой короткой статье я покажу вам, как можно быстро удалить сразу все нежелательные гиперссылки с рабочего листа Excel и предотвратить их появление в будущем. Решение работает во всех версиях Excel,…
Как использовать функцию ГИПЕРССЫЛКА В статье объясняются основы функции ГИПЕРССЫЛКА в Excel и приводятся несколько советов и примеров формул для ее наиболее эффективного использования. Существует множество способов создать гиперссылку в Excel. Чтобы сделать ссылку на…
Гиперссылка в Excel: как сделать, изменить, удалить В статье разъясняется, как сделать гиперссылку в Excel, используя 3 разных метода. Вы узнаете, как вставлять, изменять и удалять гиперссылки на рабочих листах, а также исправлять неработающие ссылки. Гиперссылки широко используются…
Как сделать зависимый выпадающий список в Excel? Одной из наиболее полезных функций проверки данных является возможность создания выпадающего списка, который позволяет выбирать значение из предварительно определенного перечня. Но как только вы начнете применять это в своих таблицах,…

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

Например, скажем, лист n имеет ячейку, которая ссылается на ячейку в листе n-1. Если у меня есть листы 1, 2 и 3, я хочу, чтобы ячейка в 3 ссылалась на ячейку в 2. Затем, если я дублирую 3 (делая Лист 4), я хочу, чтобы та же самая ячейка в 4 ссылалась на ячейку в 3.

Обычно ячейка на листе 3 гласила бы: «Лист2»!A1. Затем, если я продублирую Sheet3 для создания Sheet4, мне нужно будет зайти в ту же ячейку на Sheet4 и изменить ее на «Sheet2»!А1 до «Лист3»!A1. Я предпочел бы, чтобы это изменение было сделано автоматически, когда я дублирую лист.

Извините за многословное объяснение, но есть ли способ автоматизировать этот процесс, а не делать это вручную? В настоящее время я использую предварительный просмотр Excel 2013, но у меня также есть Excel 2012.

Спасибо!

Понравилась статья? Поделить с друзьями:
  • Значение равное количеству ячеек excel
  • Значение пустоты в excel
  • Значение пустой ячейки таблицы excel
  • Значение пропустить в excel
  • Значение производной в excel