drondrx Пользователь Сообщений: 15 |
Есть книга со множеством листов нужно примерно так Лист 1, Лист2, Лист3 (Ячейка Лист2!C1=Лист1!А1 если я меняю порядок листов Лист1, Лист3, Лист2, то ячейка Лист2!С1 нужно чтобы ссылалось на Лист3!А1. т.е нужно чтобы ячейки ссылались на предыдущий лист автоматически при перемещение листов |
Казанский Пользователь Сообщений: 8839 |
#2 02.09.2010 14:34:29 Простая функция, которая возвращает порядковый номер листа:
А дальше ДВССЫЛ: |
||
drondrx Пользователь Сообщений: 15 |
а если названия листа меняются и не сотержат слово «Лист» |
Казанский Пользователь Сообщений: 8839 |
#4 02.09.2010 14:47:45 Тогда еще одна простая функция, которая возвращает имя листа по номеру:
И, соответственно, |
||
The_Prist Пользователь Сообщений: 14183 Профессиональная разработка приложений для MS Office |
#5 02.09.2010 14:48:42
И формула Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||
vikttur Пользователь Сообщений: 47199 |
Как я понял — Листы А, Б, В. Переместили , допустим, Б — А, В ,Б |
Казанский Пользователь Сообщений: 8839 |
#7 02.09.2010 15:05:17 Дописал функцию SheetNo, чтобы по имени листа можно было определять его номер. Если аргумент опущен или равен «», то, как и раньше, возвращается номер листа, из которого вызвана ф-я:
|
||
drondrx Пользователь Сообщений: 15 |
|
vikttur Пользователь Сообщений: 47199 |
#9 02.09.2010 15:31:18
Ошибался. Мое заблуждение из-за того, что в редакторе отображаются исходные названия листов (ааа(Лист1), данные(Лист2)…), которые неизменны (но можно переименовать) и которые я принял за порядковые номера. |
||
The_Prist Пользователь Сообщений: 14183 Профессиональная разработка приложений для MS Office |
#10 02.09.2010 15:56:38
Специально не стал такого делать — пусть лучше будет ошибка #ССЫЛКА!, чем циклическая ссылка ячейки на саму себя. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
Такой вариант с макрофункцией в именованной формуле. |
|
KL расскажи пожалуйста поэтапно как ты сделал функцию (=ДВССЫЛ(«‘»&ИНДЕКС(Sheets;ПОИСКПОЗ(Sheet;Sheets;0)-1)&»‘!A1»)) в post_151506.xls. Я так понял Sheet и Sheets это имена присвоенные каким та ячейка, только каким не пойму. Разясни пожалуйста. |
|
The_Prist Пользователь Сообщений: 14183 Профессиональная разработка приложений для MS Office |
Нажимаем в листе Ctrl+F3 Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
Блин не пойму как сделать тоже самое в другой книге подскажите кто знает. |
|
The_Prist Пользователь Сообщений: 14183 Профессиональная разработка приложений для MS Office |
А что не получается? Как я посмотрел — Вы прикрепили оригинальный файл KL. Или я упустил чего? Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
Да Вы правильно поняли это тот самый файл. Не могу разобраться как он работает. Мне надо тоже самое сделать в другой книге, а как не знаю. Если можно разъясните поэтапно как он это сделал. |
|
The_Prist Пользователь Сообщений: 14183 Профессиональная разработка приложений для MS Office |
Поэтапно…Постараемся. Затем в ячейку, в которой хотите получить результат вписываете: Вместо A1 адрес той ячейки, данные которой надо получить. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
А в каких ячейках присваиваем эти имена? |
|
The_Prist Пользователь Сообщений: 14183 Профессиональная разработка приложений для 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 Пользователь Сообщений: 14183 Профессиональная разработка приложений для MS Office |
Надо посмотреть при создании имени область его действия. Должна быть Книга. «filename» на «имяфайла» Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
Сергей Гость |
#22 25.02.2011 16:59:07 Огромное спасибо. Все заработало. |
0 / 0 / 0 Регистрация: 11.08.2016 Сообщений: 4 |
|
1 |
|
Как в книге проставить формулу со ссылкой на предыдущий лист11.08.2016, 15:00. Показов 14334. Ответов 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 |
Так надо? надо писать так т.е. указывать верхнюю левую ячейку объединенной ячейки. Иначе возврачается не одно значение, а диапазон, типа {3;0:0;0}
0 |
0 / 0 / 0 Регистрация: 11.08.2016 Сообщений: 4 |
|
11.08.2016, 18:10 [ТС] |
5 |
да, хорошо, но особо волнует именно вами выделенная
‘1’ , понимаете? на третьем листе она должна стать ‘2’, на четвертом ‘3’, на 198 надо ‘197’… как заменить то, что в этих кавычках на универсально понятное екселю =’ предыдущий лист ‘!G44+E44 ?
0 |
2640 / 1697 / 694 Регистрация: 04.09.2015 Сообщений: 3,367 |
|
11.08.2016, 18:15 |
6 |
РешениеВы откройте файл и изучите формулы. Я ваши формулы с ссылкой на предыдущий лист заменил все. Имя предыдущего листа получаем формулой Код ПСТР(ЯЧЕЙКА("имяфайла";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. ДВССЫЛ ссылается на переменный лист
Скачать заметку в формате Word или pdf, примеры в формате Excel
Формула в ячейке F4: =ДВССЫЛ( » ‘ » &F$3& » ‘ ! » & » B4 » ). Первый частокол из апострофов – это открывающие кавычки » + апостроф ‘ + закрывающие кавычки » . Второй частокол – это открывающие кавычки » + два символа: апостроф и восклицательный знак ‘ ! + закрывающие кавычки » .
Проблема с формулами в четвертой строке в том, что они жестко ссылаются на В4, поэтому при копировании в строки с 5 по 7 они становятся не релевантными. Чтобы формулы могли ссылаться на данные из других строк, можно использовать функции ЯЧЕЙКА или АДРЕС. Вы можете приспособить функцию ЯЧЕЙКА в считанные секунды, но функция АДРЕС может, в конечном счете, оказаться более удобной, как только вы поймете нюансы ее использования.
Фрагмент формулы ЯЧЕЙКА( » адрес » ;$B5) возвращает текст $В$5, что удачно подходит для аргумента функции ДВССЫЛ (рис. 2). Знак доллара перед буквой В позаботится о том, чтобы формула на всех листах ссылалась на столбец В. Отсутствие знака доллара перед цифрой 5 позволит при копировании формулы вниз по столбцу ссылаться на строки 5, 6, 7… Формула в ячейке F5: =ДВССЫЛ( » ‘ » &F$3& » ‘ ! » &ЯЧЕЙКА( » адрес » ;$B5)).
Рис. 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. Аргументы функции АДРЕС
Функция АДРЕС с использованием пятого аргумента возвращает текст, который может быть использован в функции ДВССЫЛ (рис. 4). Формула в ячейке D6: =ДВССЫЛ(АДРЕС(СТРОКА();2;;;D$3)). Эта формула также может быть скопирована на всю таблицу. Первый аргумент в АДРЕС – СТРОКА() – гарантирует, что Excel извлекает значение из строки с тем же номером, что и формула. Второй аргумент фиксирован – это 2. Т.е., всегда получите столбец B. Третий и четвертый аргументы опущены, что говорит функции АДРЕС вернуть абсолютные ссылки в стиле А1. Пятый аргумент содержит знак доллара только перед строкой, что сохранит релевантность формулы при ее копировании вдоль столбца: при этом будет сохранятся ссылка на имя листа (из третьей строки). При копировании же вдоль строки ссылка будет меняется с переходом от столбца к столбцу (попробуйте в приложенном файле Excel).
Рис. 4. Альтернативный вариант с функцией АДРЕС
Дополнительные сведения: функция ДВССЫЛ может работать и со ссылками в стиле R1C1. Часто это упрощает создание формул. До сих пор мы во всех примерах функция ДВССЫЛ использовала только первый аргумент (второй аргумент был опущен), например, ДВССЫЛ( » В4 » ). Эта формула вернет такое же значение при использовании в качестве второго аргумента значения ИСТИНА: ДВССЫЛ( » В4 » ; ИСТИНА). Последняя формула явно предписывает функции ДВССЫЛ использовать стиль ссылок А1. Значение ЛОЖЬ в качестве второго аргумента – ДВССЫЛ( » В4 » ; ЛОЖЬ) – предписывает интерпретировать ссылки в стиле R1C1.
Ссылка =RC указывает на текущую строку и текущий столбец. Числе после R или C создает абсолютную ссылку на определенную строку или столбец. Так, например, формула =RC2 ссылается на столбец B из того же ряда. Если вы используете ссылки в стиле R1C1, вам не понадобятся функции ЯЧЕЙКА или АДРЕС (рис. 5). Здесь в ячейке С7 формула =ДВССЫЛ( » ‘ » &C$3& » ‘ !RC2 » ;ЛОЖЬ). Эта формула также может быть скопирована по всей таблице. Обратите внимание, что вам не придется переключаться на использование на листе ссылок в стиле 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 с листом.
Формирование ссылки макросом на предыдущий лист
Всем доброго времени суток. Есть файл с листами январь, февраль и т.д. Для примера необходимо на.
Ссылка на предыдущий лист. |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Хитрости »
20 Август 2020 3468 просмотров
Имя предыдущего листа
Иногда возникают ситуации, когда необходимо знать имя листа(текущего или на котором ссылка) — об этом я уже писал в статье Как получить имя листа формулой. Но куда сложнее ситуация с получением имени предыдущего листа. Т.е. имя того листа, который расположен перед тем листом, на котором записана формула. Зачем это может потребоваться? Например, если в книге ведут учет касс и каждый лист это отдельная дата. И в определенной ячейке необходимо получить данные по остаткам из предыдущего листа(дня).
Стандартные формулы(та же ЯЧЕЙКА(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) -создать стандартный модуль(Insert —Module) и в него вставить скопированный текст. После чего функцию можно будет вызвать из Диспетчера функций(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, 514 скачиваний)
Так же см.:
Как получить имя листа формулой
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика