Excel ячейка с предыдущего листа

 

drondrx

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

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

Есть книга со множеством листов нужно примерно так Лист 1, Лист2, Лист3  (Ячейка  Лист2!C1=Лист1!А1 если я меняю порядок листов Лист1, Лист3, Лист2, то ячейка  Лист2!С1  нужно чтобы ссылалось на Лист3!А1. т.е нужно чтобы ячейки ссылались на предыдущий лист автоматически при перемещение листов

 

Казанский

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

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

#2

02.09.2010 14:34:29

Простая функция, которая возвращает порядковый номер листа:    

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

 

А дальше ДВССЫЛ:  
=ДВССЫЛ(«Лист»&sheetno()-1&»!A1″)

 

drondrx

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

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

а если названия листа меняются и не сотержат слово «Лист»

 

Казанский

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

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

#4

02.09.2010 14:47:45

Тогда еще одна простая функция, которая возвращает имя листа по номеру:    

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

 

И, соответственно,    
=ДВССЫЛ(sheetname(sheetno()-1)&»!A1″)

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

#5

02.09.2010 14:48:42

Цитата
а если названия листа меняются и не сотержат слово «Лист»
Код
Function SheetName()   
Application.Volatile   
If Application.Caller.Parent.Index > 1 Then SheetName = Application.Caller.Parent.Previous.Name   
End Function  

   

И формула      
=ДВССЫЛ(«‘»&sheetname()&»‘!A1»)

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

vikttur

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

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

Как я понял — Листы А, Б, В. Переместили , допустим, Б —  А, В ,Б  
Формулы листа А ссылались на Б, теперь на В.  
Могу ошибаться, но это нерешаемо.

 

Казанский

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

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

#7

02.09.2010 15:05:17

Дописал функцию SheetNo, чтобы по имени листа можно было определять его номер. Если аргумент опущен или равен «», то, как и раньше, возвращается номер листа, из которого вызвана ф-я:    

Код
Function SheetNo(Optional sName As String) As Long   
Application.Volatile   
If sName = "" Then SheetNo = Application.Caller.Parent.Index Else SheetNo = Sheets(sName).Index   
End Function  
 

drondrx

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

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

 

vikttur

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

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

#9

02.09.2010 15:31:18

Цитата
Могу ошибаться, но это нерешаемо

Ошибался. Мое заблуждение из-за того, что в редакторе отображаются  исходные названия листов (ааа(Лист1), данные(Лист2)…), которые неизменны (но можно переименовать) и которые я принял за порядковые номера.

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

#10

02.09.2010 15:56:38

Цитата
Казанский: Если аргумент опущен или равен «», то, как и раньше, возвращается номер листа, из которого вызвана ф-я

Специально не стал такого делать — пусть лучше будет ошибка #ССЫЛКА!, чем циклическая ссылка ячейки на саму себя.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Такой вариант с макрофункцией в именованной формуле.

 

KL расскажи пожалуйста поэтапно как ты сделал функцию (=ДВССЫЛ(«‘»&ИНДЕКС(Sheets;ПОИСКПОЗ(Sheet;Sheets;0)-1)&»‘!A1»)) в post_151506.xls. Я так понял  Sheet и Sheets это имена присвоенные каким та ячейка, только каким не пойму. Разясни пожалуйста.    
Заранее огромное спасибо.

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

Нажимаем в листе Ctrl+F3

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Блин не пойму как сделать тоже самое в другой книге подскажите кто знает.

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

А что не получается? Как я посмотрел — Вы прикрепили оригинальный файл KL. Или я упустил чего?

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Да Вы правильно поняли это тот самый файл. Не могу разобраться как он работает. Мне надо тоже самое сделать в другой книге, а как не знаю. Если можно разъясните  поэтапно как он это сделал.

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

Поэтапно…Постараемся.  
Жмете Ctrl+F3. Создать. Создаете как в примере два имени:  
Sheet и Sheets. Для которых в поле диапазон пишите: =ПСТР(ЯЧЕЙКА(«filename»;!$A$1);НАЙТИ(«[«;ЯЧЕЙКА(«filename»;!$A$1));32) и =ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1+0*ТДАТА()) соответственно.

  Затем в ячейку, в которой хотите получить результат вписываете:  
=ДВССЫЛ(«‘»&ИНДЕКС(Sheets;ПОИСКПОЗ(Sheet;Sheets;0)-1)&»‘!A1»)  

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

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

А в каких ячейках присваиваем эти имена?

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

#19

25.02.2011 16:16:58

Цитата
А в каких ячейках присваиваем эти имена?

Теперь я не понял. Я ж написал что указывать в качестве диапазона. Что теперь-то не получается? Не надо ни в каких ячейках ничего указывать.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Извини просто я совсем тугой в этом. Создаю новую книгу нжимаю Ctrl+F3 добавляю два имени Sheet и Sheets. Для которых в поле диапазон пишиу: =ПСТР(ЯЧЕЙКА(«filename»;!$A$1);НАЙТИ(«[«;ЯЧЕЙКА(«filename»;!$A$1));32) и =ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1+0*ТДАТА()) соответственно. На листе 1 в ячейке А1 ставлю число перехожу на лист два в ячейку А1 вставляю формулу =ДВССЫЛ(«‘»&ИНДЕКС(Sheets;ПОИСКПОЗ(Sheet;Sheets;0)-1)&»‘!A1») И получаю #Имя?
Что я делаю не так?

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

Надо посмотреть при создании имени область его действия. Должна быть Книга.  
А еще…Возможно надо заменить в формуле:    
=ПСТР(ЯЧЕЙКА(«filename»;!$A$1);НАЙТИ(«[«;ЯЧЕЙКА(«filename»;!$A$1));32)

  «filename» на «имяфайла»

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Сергей

Гость

#22

25.02.2011 16:59:07

Огромное спасибо. Все заработало.

Как ссылаться на конкретное значение ячейки из предыдущего листа при создании копии в 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

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

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

Сообщений: 15888


Репутация:

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

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

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

Сообщений: 15888


Репутация:

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

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

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

Сообщений: 15888


Репутация:

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

 

Ответить

Содержание

  1. Ссылка на ячейку в другом листе Excel
  2. Ссылка на лист в формуле Excel
  3. Как сделать ссылку на лист в Excel?
  4. Ссылка на лист в другой книге Excel
  5. Имя предыдущего листа
  6. Excel ячейка с предыдущего листа
  7. Excel ячейка с предыдущего листа

Ссылка на ячейку в другом листе Excel

На всех предыдущих уроках формулы и функции ссылались в пределах одного листа. Сейчас немного расширим возможности их ссылок.

Excel позволяет делать ссылки в формулах и функциях на другие листы и даже книги. Можно сделать ссылку на данные отдельного файла. Кстати в такой способ можно восстановить данные из поврежденного файла xls.

Ссылка на лист в формуле Excel

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

Возникает вопрос: как сделать ссылку на другой лист в Excel? Для реализации данной задачи делаем следующее:

  1. Заполните Лист1, Лист2 и Лист3 так как показано выше на рисунке.
  2. Перейдите на Лист4, ячейка B2.
  3. Поставьте знак «=» и перейдите на Лист1 чтобы там щелкнуть левой клавишей мышки по ячейке B2.
  4. Поставьте знак «+» и повторите те же действия предыдущего пункта, но только на Лист2, а потом и Лист3.
  5. Когда формула будет иметь следующий вид: =Лист1!B2+Лист2!B2+Лист3!B2, нажмите Enter. Результат должен получиться такой же, как на рисунке.

Как сделать ссылку на лист в Excel?

Ссылка на лист немного отличается от традиционной ссылки. Она состоит из 3-х элементов:

  1. Имя листа.
  2. Знак восклицания (служит как разделитель и помогает визуально определить, к какому листу принадлежит адрес ячейки).
  3. Адрес на ячейку в этом же листе.

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

Ссылка на лист в другой книге Excel

Ссылка на лист в другой книге имеет уже 5 элементов. Выглядит она следующим образом: =’C:Docs[Отчет.xlsx]Лист1′!B2.

Описание элементов ссылки на другую книгу Excel:

  1. Путь к файлу книги (после знака = открывается апостроф).
  2. Имя файла книги (имя файла взято в квадратные скобки).
  3. Имя листа этой книги (после имени закрывается апостроф).
  4. Знак восклицания.
  5. Ссылка на ячейку или диапазон ячеек.

Данную ссылку следует читать так:

  • книга расположена на диске C: в папке Docs;
  • имя файла книги «Отчет» с расширением «.xlsx»;
  • на «Лист1» в ячейке B2 находится значение на которое ссылается формула или функция.

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

Без функций и формул Excel был бы одной большой таблицей предназначенной для ручного заполнения данными. Благодаря функциям и формулам он является мощным вычислительным инструментом. А полученные результаты, динамически представляет в желаемом виде (если нужно даже в графическом).

Источник

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

Иногда возникают ситуации, когда необходимо знать имя листа(текущего или на котором ссылка) — об этом я уже писал в статье Как получить имя листа формулой. Но куда сложнее ситуация с получением имени предыдущего листа. Т.е. имя того листа, который расположен перед тем листом, на котором записана формула. Зачем это может потребоваться? Например, если в книге ведут учет касс и каждый лист это отдельная дата. И в определенной ячейке необходимо получить данные по остаткам из предыдущего листа(дня).
Стандартные формулы(та же ЯЧЕЙКА (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 Скачать файл пример:

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

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

Источник

Excel ячейка с предыдущего листа

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

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

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

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

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

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

Сообщение Всем добра!

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

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

Помогите пожалуйста с функцией, макросом итд
Понятия не имею куда, что вписывать итд, так как знаком только с простейшими функциями.
Прикрепляю вайл, если не сложно, прошу знатоков прописать функцию и закрепить его в своем сообщении, я не разберусь. Автор — Goorito
Дата добавления — 15.04.2019 в 06:28

Источник

Excel ячейка с предыдущего листа

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[admin]Оформляйте коды тегами![/admin] Автор — ghost3085
Дата добавления — 29.05.2013 в 14:08

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

Ответить

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

Ответить

ghost3085 Дата: Четверг, 30.05.2013, 14:06 | Сообщение № 8
Serge_007 Дата: Четверг, 30.05.2013, 14:14 | Сообщение № 9
ghost3085 Дата: Пятница, 31.05.2013, 10:49 | Сообщение № 10
Serge_007 Дата: Пятница, 31.05.2013, 10:59 | Сообщение № 11
AlexM Дата: Пятница, 31.05.2013, 11:14 | Сообщение № 12

Ответить

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


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

ghost3085 Дата: Понедельник, 03.06.2013, 14:26 | Сообщение № 15
Сергей Дата: Пятница, 17.01.2014, 10:41 | Сообщение № 16
maeglah Дата: Понедельник, 20.01.2014, 20:47 | Сообщение № 17

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

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

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

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

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

Так что главный вопрос — как получить имя листа которому принадлежит вычисляемая ячейка для которой происходят вычисления не зависимо от активного в данный момент листа. Автор — maeglah
Дата добавления — 20.01.2014 в 20:47

Источник

Adblock
detector

0 / 0 / 0

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

Сообщений: 4

1

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

11.08.2016, 15:00. Показов 14280. Ответов 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



Понравилась статья? Поделить с друзьями:
  • Excel ячейка с названием книги
  • Excel ячеек править это
  • Excel ячейка с косой чертой
  • Excel ячейка с константой в формуле
  • Excel ячеек значений 2007