Excel переменная название листа

 

Юрий

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

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

Добрый день.

Подскажите, пожалуйста, ответ на мой глупый вопрос :) . Для ячейки можно использовать команду Range(«a» & i). Как будет выглядеть в таком стиле код для Sheets(«название»)? Нужно не выбор через номер, а именно через имя.
Т.е. код ниже не подходит:

sub 1()
dim i
i=1
Sheets(i).select
end sub

 

Юрий М

Модератор

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

Контакты см. в профиле

 

ikki

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

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

#3

27.12.2012 13:13:16

Цитата
Юрий пишет: Sheets(«название»)

вот именно так и пишите.

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Юрий М

Модератор

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

Контакты см. в профиле

Наверное, имя+переменная?
i = 3
Sheets(«Лист» & i).Activate

 

Юрий

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

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

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

По теме: Можно было еще указать i=»имя» и это сработало бы в примере указанном мною выше. Но в прикремленном примере почему-то не работает. Подскажите,пожалуйста, что нужно поправить.

В планах указать имя листа в Public zn As Integer, чтобы его можно было использовать для определения с какого листа следует брать список.

Прикрепленные файлы

  • пример.xls (66.5 КБ)

 

Юрий М

Модератор

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

Контакты см. в профиле

Имя листа — это строка, а у Вас переменная Integer

 

Юрий

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

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

#7

27.12.2012 13:28:44

Цитата
Юрий М пишет:
Имя листа — это строка, а у Вас переменная Integer
Цитата
Юрий М пишет:
Public zn As Integer

Нужно просто Public zn ?

У меня из-за этого места форма не открывается:

Код
zn = "ии"
Dim x As Long
x = 0
With ComboBox2
For i = 1 To 8
.AddItem ""
.List(x, 0) = Sheets(zn).Cells(i, 1).Value
x = x + 1
Next
End With
 

Юрий М

Модератор

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

Контакты см. в профиле

 

KuklP

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

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

E-mail и реквизиты в профиле.

#9

27.12.2012 13:33:49

Цитата
Юрий пишет:
For i = 1 To 8 .AddItem «» .List(x, 0) = Sheets(zn).Cells(i, 1).Value x = x + 1

Зачем так?

Код
For i = 1 To 8
.AddItem  Sheets(zn).Cells(i, 1).Value
x = x + 1

Я сам — дурнее всякого примера! …

 

ikki

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

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

зачем так? :))
для одноколоночного списка достаточно
ComboBox2.List = Sheets(zn).[a1:a8].Value

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Юрий М

Модератор

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

Контакты см. в профиле

А я вот эту строку не понял:
If Sheets(zn).ComboBox2.Value = «» Then Exit Sub
Если zn = «ии» — ведь там на листе нет КомбоБокса.

 

Юрий

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

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

Спасибо. И правда короче, а  работает также, но с Sheets(zn) все равно проблема. Не могу понять, как задать zn=»ии», или zn=»аа»

 

ikki

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

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

офф
ух ты…
Value с предшествующей точкой даже и не в теге code ведут себя неадекватно.
беда.

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

ikki

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

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

#14

27.12.2012 13:49:54

в стандартном модуле поменяйте на

Код
public zn as s tring

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Юрий М

Модератор

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

Контакты см. в профиле

Саш, я уже предлагал  в 13:30:33)

 

Юрий

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

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

#16

27.12.2012 13:51:26

Цитата
ikki пишет:
офф
ух ты…
Value с предшествующей точкой даже и не в теге code ведут себя неадекватно.
беда.

Все заработало. Большое всем спасибо. Забыл Public zn as sting «r» добавить  :)  . Выкладываю окончательный вариант, может кому пригодится.

Прикрепленные файлы

  • пример.xls (52 КБ)

Изменено: Юрий27.12.2012 14:04:52

В формуле использовать Имя листа из ячейки

Logist

Дата: Среда, 27.11.2013, 11:42 |
Сообщение № 1

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

Ранг: Участник

Сообщений: 62


Репутация:

1

±

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


Доброе утро!
Как подставить в формулу имя листа из ячейки?
рабочая формула

Код

=СУММЕСЛИ(‘Кача (2этаж)’!G:G;»Итого:»;’Кача (2этаж)’!H:H)

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

попробовал так

Код

=СУММЕСЛИ(ДВССЫЛ(B4&»!G:G»);»Итого:»;(ДВССЫЛ(B4&»!H:H»)));

но ошибка #ССЫЛКА

подскажите что делаю не так?

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

6254845.xls
(66.5 Kb)

 

Ответить

Pelena

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

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

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

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Так как имя листа содержит пробелы, его надо заключать в апострофы

Код

=СУММЕСЛИ(ДВССЫЛ(«‘»&B4&»‘!G:G»);»Итого:»;(ДВССЫЛ(«‘»&B4&»‘!H:H»)))


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Logist

Дата: Среда, 27.11.2013, 11:51 |
Сообщение № 3

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

Ранг: Участник

Сообщений: 62


Репутация:

1

±

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


Pelena, спасибо!
В будущем учту.

 

Ответить

Logist

Дата: Среда, 11.12.2013, 13:00 |
Сообщение № 4

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

Ранг: Участник

Сообщений: 62


Репутация:

1

±

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


Добрый день.
Подскажите а если необходимо
в формуле использовать Имя листа из ячейки
другой книги, допустим с названием «БазаДанных»,
то куда или как его подставить в эту формулу

Код

=СУММЕСЛИ(ДВССЫЛ(«‘»&B4&»‘!G:G»);»Итого:»;(ДВССЫЛ(«‘»&B4&»‘!H:H»)))

ни как не соображу.

Заранее спасибо!

 

Ответить

китин

Дата: Среда, 11.12.2013, 13:12 |
Сообщение № 5

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016

Код

=ДВССЫЛ(«‘[БазаДанных.xlsx]»&B4&»‘!G:G»)

как то так,наверное <_<


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

Сообщение отредактировал китинСреда, 11.12.2013, 13:13

 

Ответить

Logist

Дата: Среда, 11.12.2013, 13:36 |
Сообщение № 6

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

Ранг: Участник

Сообщений: 62


Репутация:

1

±

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


Спасибо. Помогли.

 

Ответить

Graf_Vishin

Дата: Четверг, 23.01.2014, 12:31 |
Сообщение № 7

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

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

Сообщений: 3


Репутация:

0

±

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


Excel 2010

У меня почемуто работает, если тока два файла открыты, если тока тот, где ссылка, то выдает #ССЫЛКА

 

Ответить

китин

Дата: Четверг, 23.01.2014, 15:37 |
Сообщение № 8

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016

ДВССЫЛ не работает с закрытыми книгами


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

Kompromis

Дата: Среда, 14.05.2014, 09:03 |
Сообщение № 9

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

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

Сообщений: 43


Репутация:

0

±

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


Excel 2013

Так как имя листа содержит пробелы, его надо заключать в апострофы

=СУММЕСЛИ(ДВССЫЛ(«‘»&B4&»‘!G:G»);»Итого:»;(ДВССЫЛ(«‘»&B4&»‘!H:H»)))

А если не СУММ, допустим, а СЦЕПИТЬ и вместо G:G конкретная ячейка с данными G4 и так далее вниз, как размножить такую формулу? Из-за кавычек прирастания G от протягивания вниз не произойдет?!


ツ iii dиw ʁɔvʎнdǝвǝdǝu – dиw vǝmоɔ ɔ ɐwʎ iii ツ

 

Ответить

Kompromis

Дата: Среда, 14.05.2014, 09:08 |
Сообщение № 10

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

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

Сообщений: 43


Репутация:

0

±

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


Excel 2013

Вот такая формула (согласно вашему наставлению из-за пробелов кавычки использовать)

Код

=СЦЕПИТЬ(ДВССЫЛ(«‘»&$B$1&»‘!a4″);» «;ДВССЫЛ(«‘»&$B$1&»‘!c4″);» s# «;ДВССЫЛ(«‘»&$B$1&»‘!g4»))

не протягивается ((( до необходимых:

Код

=СЦЕПИТЬ(ДВССЫЛ(«‘»&$B$1&»‘!a5″);» «;ДВССЫЛ(«‘»&$B$1&»‘!c5″);» s# «;ДВССЫЛ(«‘»&$B$1&»‘!g5»))

если убрать кавычки:

Код

=СЦЕПИТЬ(ДВССЫЛ(‘»&$B$1&»‘!A4);» «;ДВССЫЛ(‘»&$B$1&»‘!C4);» s# «;ДВССЫЛ(‘»&$B$1&»‘!G4))

размножаемая, то результат

#ССЫЛКА!


ツ iii dиw ʁɔvʎнdǝвǝdǝu – dиw vǝmоɔ ɔ ɐwʎ iii ツ

Сообщение отредактировал Serge_007Среда, 14.05.2014, 23:48

 

Ответить

Pelena

Дата: Среда, 14.05.2014, 09:17 |
Сообщение № 11

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

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

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Попробуйте так

Код

=СЦЕПИТЬ(ДВССЫЛ(«‘»&$B$1&»‘!a»&СТРОКА(A4));» «;ДВССЫЛ(«‘»&$B$1&»‘!c»&СТРОКА(A4));» s# «;ДВССЫЛ(«‘»&$B$1&»‘!g»&СТРОКА(A4)))


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Kompromis

Дата: Среда, 14.05.2014, 09:25 |
Сообщение № 12

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

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

Сообщений: 43


Репутация:

0

±

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


Excel 2013

спасибо, Елена!!! В очередной раз спасаете!


ツ iii dиw ʁɔvʎнdǝвǝdǝu – dиw vǝmоɔ ɔ ɐwʎ iii ツ

Сообщение отредактировал Serge_007Среда, 14.05.2014, 23:47

 

Ответить

Kompromis

Дата: Пятница, 16.05.2014, 09:01 |
Сообщение № 13

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

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

Сообщений: 43


Репутация:

0

±

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


Excel 2013

Serge_007 выставил какие-то замечания, типа, за «Оверквотинг» за нарушение правил пп3..Что за дурость?! На пальцах объяснять чтоль? И в какой строке указано допустимое кол-во цитат? Или все на твое усмотрение?! Смахивает на детскую мстю какую-то…прям смешно… засорил остановившуюся тему цитатами…

ЗЫ: ПИШУ ЗДЫСЬ, т.к. Замечальщик забаррикадировался ото всех.


ツ iii dиw ʁɔvʎнdǝвǝdǝu – dиw vǝmоɔ ɔ ɐwʎ iii ツ

 

Ответить

китин

Дата: Пятница, 16.05.2014, 09:17 |
Сообщение № 14

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016

Смахивает на детскую мстю

Kompromis, скорее ваш пост смахивает на детскую обиду:за что в угол поставили? %)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

Kompromis

Дата: Пятница, 16.05.2014, 10:31 |
Сообщение № 15

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

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

Сообщений: 43


Репутация:

0

±

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


Excel 2013

У меня не детская обида))) Заблокировал меня!Типа, как написал, «за Оверквотинг» и второй раз за нарушение пп3 ???? Если не сложно, может Вы, как «Проверенный» распятнаете что ж я такого натворил. про «мстю», эт Вы не знаете предистории, когда Serge_07 свои комменты подчищал. Хотя… может я и не прав.


ツ iii dиw ʁɔvʎнdǝвǝdǝu – dиw vǝmоɔ ɔ ɐwʎ iii ツ

 

Ответить

китин

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

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016

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

смахивает на детскую обиду

ЗЫ.представьте,если бы я сейчас процитировал все три поста нашей беседы?это можно было бы читать?


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

Pelena

Дата: Пятница, 16.05.2014, 10:45 |
Сообщение № 17

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

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

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Господа, оффтоп прекращаем. Все вопросы сюда


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

mrmuratov

Дата: Вторник, 20.05.2014, 10:44 |
Сообщение № 18

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

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

Сообщений: 13


Репутация:

2

±

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


Excel 2010

Добрый день!
Тот же вопрос но немного посложнее сам не могу додуматься как сделать может кто подскажет.

Как сделать ссылку на листы другой (закрытой книги) с названием месяца в ячейке этой книге.

!! См. вложение будет более понятнее.
[moder]См. Правила форума.
Эта тема закрыта.

 

Ответить

Хитрости »

4 Март 2015              53359 просмотров


Как получить имя листа формулой

Задача: записать в отдельной ячейке или внутри формулы имя текущего листа(т.е. того, в котором сама функция).

В принципе это очень легко сделать простейшей функцией пользователя:

'---------------------------------------------------------------------------------------
' Procedure : GetShName
' DateTime  : 04.03.2015 10:44
' Author    : The_Prist(Щербаков Дмитрий)
'             http://www.excel-vba.ru
' Purpose   : Функция возвращает в ячейку имя листа
'             rCell - Необязательный аргумент.
'                     Если указан - функция вернет имя листа, на котором расположена эта ячейка
'                     Если не указан - функция вернет имя листа, в котором записана функция
'---------------------------------------------------------------------------------------
Function GetShName(Optional rCell As Range)
    If Not rCell Is Nothing Then
        GetShName = rCell.Parent.Name
    Else
        GetShName = Application.Caller.Parent.Name
    End If
End Function

Синтаксис:
получение имени листа, в котором записана функция:
=GetShName()
получение имени листа, в котором расположена указанная ячейка
=GetShName(A1) — данная запись равнозначна записи без ячейки, т.к. ячейка все равно в пределах листа с самой функцией
=GetShName(Лист2!A1)


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

=ПСТР(ЯЧЕЙКА(«filename»;A2);ПОИСК(«]»;ЯЧЕЙКА(«filename»;A2))+1;31)
=MID(CELL(«filename»,A2),SEARCH(«]»,CELL(«filename»,A2))+1,31)

Однако эта формула вернет точно такой же результат, как функция пользователя выше и макросы совершенно не нужны.

Теперь разберем эту формулу поподробнее
Самая основная часть — ЯЧЕЙКА(«filename»;A2). Функция ЯЧЕЙКА (CELL) с записанным первым аргументом «filename» возвращает полный путь к книге, включая имя листа и адрес ячейки, в которой записана функция:
C:UsersДмитрийDesktop[Tips_All_GetShName.xls]Лист1
Т.к. нам нужно только имя листа — мы применяем ПСТР (MID), которая возвращает часть текста, начиная с указанной позиции символа. ПОИСК (SEARCH) ищет нам именно эту позицию — позицию символа «]».
Если по шагам просмотреть этапы работы формулы, то будет нечто вроде:
=ПСТР(ЯЧЕЙКА(«filename»;A2);ПОИСК(«]»;ЯЧЕЙКА(«filename»;A2))+1;31)
Шаг1 =>
=ПСТР(ЯЧЕЙКА(«filename»;A2);ПОИСК(«]»;C:UsersДмитрийDesktop[Tips_All_GetShName.xls]Лист1)+1;31)
Шаг2 =>
=ПСТР(ЯЧЕЙКА(«filename»;A2);49+1;31)
Шаг3 =>
=ПСТР(C:UsersДмитрийDesktop[Tips_All_GetShName.xls]Лист1;50;31)
Шаг4 =>
=Лист1
Первый момент: почему применяю цифру 31 последним аргументом ПСТР? По факту, там необходимо указывать точное количество символов, но если указать больше — то будут взяты все символы от указанного и до последнего. Т.е можно было бы указать и 99, но 31 — это максимальное количество символов, которое можно использовать в имени листа.
Второй момент: первым аргументом функции ЯЧЕЙКА указывается текст, обозначающий тип сведений. В русской локализации он доступен на русском — «имяфайла». Однако при открытии файла с этой функцией в другой локализации тип сведений не будет переведен и функция не сможет работать. Поэтому я указываю на английском, т.к. он является универсальным в данном случае и будет работать в любой локализации. Однако нет никакой ошибки, если указать на русском: ЯЧЕЙКА(«имяфайла»;A2)

Если вторым аргументом функции ЯЧЕЙКА ничего не указывать(=ЯЧЕЙКА(«filename»)), то функция вернет полный путь с именем того листа, который активен в данный момент(даже если это лист другой книги). Это всегда надо учитывать. Часто функцию используют для определения имени книги, в которой сама функция записана(например, для запросов Power Query — Относительный путь к данным PowerQuery). И в какой-то момент может получиться так, что ожидаете увидеть имя книги или листа с функцией, а получаете совсем другое.

Правда, у этой формулы есть свои недостатки: обязательно необходимо, чтобы книга была сохранена на диске. Это означает, что формула не сработает для книги, которая была только что создана и не сохранена. Связано это с ограничениями возможностей параметра «filename» функции ЯЧЕЙКА(CELL). Она не может получить путь к файлу, который еще не сохранен.
Функция пользователя(UDF) GetShName(приведенная в самом начале статьи) лишена этого недостатка.

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


Кто-то уже явно догадался, что подобным же образом можно получить не только имя листа — но и имя книги:
=ПСТР(ЯЧЕЙКА(«filename»);ПОИСК(«[«;ЯЧЕЙКА(«filename»))+1;ПОИСК(«]»;ЯЧЕЙКА(«filename»))-ПОИСК(«[«;ЯЧЕЙКА(«filename»))-1)
так же как и для имени листа — можно указать ячейку из другой книги и тогда формула вернет имя той книги, из которой указана ячейка.
Если ячейка не указана — функция вернет имя активной в данный момент книги.

Так же можно получить полный путь к книге и имя книги(без квадратных скобок и имени листа):
=ПОДСТАВИТЬ(ПСТР(ЯЧЕЙКА(«filename»;A1);1;ПОИСК(«]»;ЯЧЕЙКА(«filename»;A1))-1);»[«;»»)

Так же см.:
Имя предыдущего листа


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

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


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



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


Определим имя листа с помощью функции

ЯЧЕЙКА()

.

Имя листа можно определить с помощью функции

ЯЧЕЙКА()

, записав формулу (см.

файл примера

):

=ПРАВСИМВ(ЯЧЕЙКА(«имяфайла»);ДЛСТР(ЯЧЕЙКА(«имяфайла»))-ПОИСК(«]»;ЯЧЕЙКА(«имяфайла»)))

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

F9

(Вкладка

Формулы

, Группа

Вычисление

,

Пересчет

).

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

ЯЧЕЙКА()

, но с аргументом «адрес».

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

=ЯЧЕЙКА(«адрес»;лист2!A1)

находится на

листе1

в ячейке

B1

, то имя листа (

Лист2

) можно определить по формуле:


=ПСТР(B1;ПОИСК(«]»;B1)+1;ДЛСТР(B1)-ПОИСК(«]»;B1)-5)

В этом случае имя листа не должно состоять только из цифр, т.к. если в качестве названия листа использовано число, то функция

ЯЧЕЙКА()

возвращает название книги и листа в апострофах (‘) и формула вернет неправильный результат. Справиться с этим поможет формула

=ПОДСТАВИТЬ(C1;»‘»;»»)

, которая удалит символ апострофа.

Также предполагается, что имя файла не содержит символа

закрывающая квадратная скобка

( ] ).


ВНИМАНИЕ

!

Иногда, когда открыто несколько книг, функция

ЯЧЕЙКА()

может работать некорректно. Для восстановления работоспособности формулы нужно нажать клавишу

F9

(

).


ПРИМЕНЕНИЕ:

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

ДВССЫЛ()

, в которой имя листа может фигурировать в текстовой форме

ДВССЫЛ(«Лист1!A1»)

. В статье

Определение имени листа для использования в функции ДВССЫЛ()

показано как использовать функцию

ЯЧЕЙКА()

, чтобы сохранить работоспособность формулы с функцией

ДВССЫЛ()

.

Функция ЛИСТ в Excel возвращает числовое значение, соответствующее номеру листа, на который указывает ссылка, переданная функции в качестве параметра.

Функции ЛИСТ и ЛИСТЫ в Excel: описание аргументов и синтаксиса

Функция ЛИСТЫ в Excel возвращает числовое значение, которое соответствует количеству листов, на которые предоставлена ссылка.

Примечания:

  1. Обе функции полезны для использования в документах, содержащих большое количество листов.
  2. Лист в Excel – это таблица из всех ячеек, отображаемых на экране и находящихся за его пределами (всего 1 048 576 строк и 16 384 столбца). При отправке листа на печать он может быть разбит на несколько страниц. Поэтому нельзя путать термины «лист» и «страница».
  3. Количество листов в книге ограничено лишь объемом ОЗУ ПК.

Функция ЛИСТ имеет в своем синтаксисе всего 1 аргумент и то не обязательный для заполнения: =ЛИСТ(значение).

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

Примечания:

  1. При работе функции ЛИСТ учитываются все листы, которые являются видимыми, скрытыми и очень скрытыми. Исключениями являются диалоги, макросы и диаграммы.
  2. Если аргументом функции является текстовое значение, которое не соответствует названию ни одного из листов, содержащихся в книге, будет возвращена ошибка #НД.
  3. Если в качестве аргумента функции было передано недействительное значение, результатом ее вычислений будет являться ошибка #ССЫЛКА!.
  4. В рамках объектной модели (иерархия объектов на VBA, в которой Application является главным объектом, а Workbook, Worksheer и т. д. – дочерними объектами) функция ЛИСТ недоступна, поскольку она содержит схожую функцию.

Функция листы имеет следующий синтаксис: =ЛИСТЫ(ссылка).

  • ссылка – объект ссылочного типа, для которого требуется определить количество листов. Данный аргумент является необязательным. Если данный параметр не указан, функция вернет количество листов, содержащихся в книге, на одном из листов которой она была записана.

Примечания:

  1. Данная функция подсчитывает количество всех скрытых, очень скрытых и видимых листов, за исключением диаграмм, макросов и диалогов.
  2. Если в качестве параметра была передана недействительная ссылка, результатом вычислений является код ошибки #ССЫЛКА!.
  3. Данная функция недоступна в объектной модели в связи с наличием там схожей функции.



Как получить имя листа формулой в Excel

Пример 1. При выполнении расчетной работы студент использовал программу Excel, в которой создал книгу из несколько листов. Для собственного удобства, студент решил в ячейках A2 и B2 каждого листа выводить данные о названии листа и его порядковом номере соответственно. Для этого он использовал следующие формулы:

Имя ЛИСТа.

Описание аргументов для функции ПСТР:

  1. ЯЧЕЙКА(«имяфайла») – функция, возвращающая текст, в котором функция ПСТР выполняет поиск заданного количества символов. В данном случае вернется значение «C:UserssoulpDesktop[ЛИСТ_ЛИСТЫ.xlsx]Статические расчеты», где после символа «]» находится искомый текст – название листа.
  2. НАЙТИ(«]»;ЯЧЕЙКА(«имяфайла»))+1 – функция, возвращающая номер позиции символа «]», единица добавлена с той целью, чтобы функция ПСТР не учитывала символ «]».
  3. 31 – максимальное количество символов в названии листа.

=ЛИСТ() – данная функция без параметра вернет номер текущего листа. В результате ее вычисления получим количество листов в текущей книге.

Примеры использования функции ЛИСТ и ЛИСТЫ

Пример 2. В книге Excel содержится несколько листов. Необходимо:

  1. Вернуть номер текущего листа.
  2. Вернуть номер листа с названием «Статические_расчеты».
  3. Вернуть номер листа «Динамические_расчеты», если его ячейка A3 содержит значение 0.

Внесем данные в таблицу:

Внесем данные.

Далее составим формулы для всех 4-х условий:

  • для условия №1 используем следующую формулу: =ЛИСТ()
  • для условия №2 введем формулу: =ЛИСТ(«Статические_расчеты»)
  • для условия №3 запишем формулу:

Функция ЕСЛИ выполняет проверку условия равенства значения, хранящегося в ячейке A3 листа Динамические_расчеты, нулю или пустому значению.

В результате получим:

В результате.

Обработка информации о листах книги по формуле Excel

Пример 3. В книге Excel содержится несколько листов. Необходимо определить общее количество листов, а также число листов, содержащихся между листами «Статические_расчеты» и «Экономические_расчеты».

Исходная таблица имеет вид:

Исходная таблица.

Общее количество листов вычислим по формуле:

Для определения количества листов, содержащихся между двумя указанными листами, запишем формулу:

  1. Статические_расчеты:Экономические_расчеты!A2 – ссылка на ячейку A2 диапазона листов между «Статические_расчеты» и «Экономические_расчеты» включая эти листы.
  2. Для получения искомого значения было вычтено число 2.

В результате получим следующее:

Формула выводит информацию о листах.

Скачать примеры функций ЛИСТ и ЛИСТЫ в формулах Excel

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

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