Есть ли лист с таким именем excel

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

Присвоение листа объектной переменной

Пользовательская функция VBA Excel для проверки существования листа в рабочей книге путем определения результата присвоения ссылки на него объектной переменной. Присвоение состоялось (SheetExist = True) – искомый лист существует, произошла ошибка и присвоение не состоялось (SheetExist = False) – лист не существует.

Function SheetExist(WbName As String, ShName As String) As Boolean

Dim mySheet As Worksheet

    On Error Resume Next

        Set mySheet = Workbooks(WbName).Sheets(ShName)

    SheetExist = Not mySheet Is Nothing

End Function

Аргументы функции SheetExist:

  • WbName – имя открытой рабочей книги, в которой ищется лист.
  • ShName – имя искомого рабочего листа.

Перебор существующих листов циклом

Проверка существования рабочего листа в книге Excel с помощью перебора существующих листов циклом VBA и сравнения их имен с именем искомого листа. Совпадение найдено (SheetExist = True) – искомый лист существует, совпадение не найдено (SheetExist = False) – лист не существует.

Function SheetExist(WbName As String, ShName As String) As Boolean

Dim mySheet As Worksheet

    For Each mySheet In Workbooks(WbName).Sheets

        If mySheet.Name = ShName Then

            SheetExist = True

            Exit Function

        End If

    Next

End Function

Пример проверки существования листа

Пример проверки существования искомого листа в рабочей книге Excel с помощью пользовательской функции VBA SheetExist:

Sub Primer()

    If SheetExist(ThisWorkbook.Name, «Лист1») Then

        MsgBox «Лист существует»

    Else

        MsgBox «Лист не существует»

    End If

End Sub

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

...

    If SheetExist(«Книга2.xlsm», «Лист2») Then

...

Обратите внимание, если книга, имя которой указано в параметре WbName закрыта или не существует, будет сгенерирована ошибка.

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


Содержание

  1. Определяем имя листа в EXCEL
  2. Как узнать существует ли лист в книге?
  3. Имя листа в excel формула
  4. Определяем имя листа в MS EXCEL
  5. Определение имени листа в MS EXCEL для использования в функции ДВССЫЛ()
  6. Примеры использования функций ЛИСТ и ЛИСТЫ в формулах Excel
  7. Функции ЛИСТ и ЛИСТЫ в Excel: описание аргументов и синтаксиса
  8. Как получить имя листа формулой в Excel
  9. Примеры использования функции ЛИСТ и ЛИСТЫ
  10. Обработка информации о листах книги по формуле Excel
  11. Имя листа в формуле
  12. Подстановка названия листа в формулу
  13. как в формуле получить ссылку на лист (название листа в некой ячейке)
  14. Присвоение ячейке имени листа (Формулы/Formulas)
  15. Получение списка имен листов формулой

Определяем имя листа в EXCEL

history 4 апреля 2013 г.

Определим имя листа с помощью функции ЯЧЕЙКА() .

Имя листа можно определить с помощью функции ЯЧЕЙКА() , записав формулу (см. файл примера ): =ПРАВСИМВ(ЯЧЕЙКА(«имяфайла»);ДЛСТР(ЯЧЕЙКА(«имяфайла»))-ПОИСК(«]»;ЯЧЕЙКА(«имяфайла»)))

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

Формула вернет имя листа, содержащего ячейку с вышеуказанной формулой. Если требуется определить имя другого листа, то можно использовать туже функцию ЯЧЕЙКА() , но с аргументом «адрес».

Для этого нужно, чтобы второй аргумент содержал ссылку на ячейку другого листа, имя которого и будет определено. Если формула =ЯЧЕЙКА(«адрес»;лист2!A1) находится на листе1 в ячейке B1 , то имя листа ( Лист2 ) можно определить по формуле:

В этом случае имя листа не должно состоять только из цифр, т.к. если в качестве названия листа использовано число, то функция ЯЧЕЙКА() возвращает название книги и листа в апострофах (‘) и формула вернет неправильный результат. Справиться с этим поможет формула =ПОДСТАВИТЬ(C1;»‘»;»») , которая удалит символ апострофа.

Также предполагается, что имя файла не содержит символа закрывающая квадратная скобка ( ] ).

ВНИМАНИЕ ! Иногда, когда открыто несколько книг, функция ЯЧЕЙКА() может работать некорректно. Для восстановления работоспособности формулы нужно нажать клавишу F9 ( Формулы/ Вычисления/ Пересчет ).

ПРИМЕНЕНИЕ: При изменении имени листа, все ссылки в формулах автоматически обновятся и будут продолжать работать. Исключение составляет функция ДВССЫЛ() , в которой имя листа может фигурировать в текстовой форме ДВССЫЛ(«Лист1!A1») . В статье Определение имени листа для использования в функции ДВССЫЛ() показано как использовать функцию ЯЧЕЙКА() , чтобы сохранить работоспособность формулы с функцией ДВССЫЛ() .

Источник

Как узнать существует ли лист в книге?

Довольно часто при добавлении листов в книгу кодом необходимо удостовериться существует ли уже лист с таким именем или же нет. Т.к. если уже существует, то попытка создать лист с таким же именем неизбежно приведет к ошибке. Можно, конечно, поставить обработчик ошибки On Error.

Sub Add_New_Sheet() On Error Resume Next Sheets.Add(, Sheets(Sheets.Count)).Name = «Новый лист» End Sub

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

Sub Add_New_Sheet() Dim wsSh As Worksheet On Error Resume Next Set wsSh = Sheets(«Новый лист») If wsSh Is Nothing Then Sheets.Add(, Sheets(Sheets.Count)).Name = «Новый лист» ‘здесь можно либо активировать лист, либо производить еще какие действия ‘wsSh.Activate End Sub

Если предполагается использовать такую проверку более одного раза в коде, то имеет смысл вынести проверку в отдельную функцию

Function Sh_Exist(wb As Workbook, sName As String) As Boolean Dim wsSh As Worksheet On Error Resume Next Set wsSh = wb.Sheets(sName) Sh_Exist = Not wsSh Is Nothing End Function

Функция проверяет наличие листа в указанной книге и возвращает True, если лист есть в книге и False, если листа нет.
wb — объект Workbook, наличие листа в которой надо проверить.
sName — имя листа, наличие которого необходимо проверить.
Код функции Sh_Exist необходимо поместить в стандартный модуль и тогда для проверки наличия листа достаточно будет одной строки кода:

Sub Add_New_Sheet() If Not Sh_Exist(ActiveWorkbook, «Новый лист») Then ActiveWorkbook.Sheets.Add(, ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)).Name = «Новый лист» End If End Sub

«Новый лист» — вместо этого текста указывается имя листа, наличие которого необходимо проверить.
Если проверять надо не в активной книге, а в какой-либо другой, то вместо ActiveWorkbook необходимо указать эту книгу. Например, если книга называется «Отчет.xlsx», то код будет таким:

Sub Add_New_Sheet() If Not Sh_Exist(Workbooks(«Отчет.xlsx»), «Новый лист») Then Workbooks(«Отчет.xlsx»).Sheets.Add(, Workbooks(«Отчет.xlsx»).Sheets(Workbooks(«Отчет.xlsx»).Sheets.Count)).Name = «Новый лист» End If End Sub

Хотя в данном случае практичнее выделить отдельную переменную:

Sub Add_New_Sheet() Dim wbCheck As Workbook Set wbCheck = Workbooks(«Отчет.xlsx») If Not Sh_Exist(wbCheck, «Новый лист») Then wbCheck.Sheets.Add(, wbCheck.Sheets(wbCheck.Sheets.Count)).Name = «Новый лист» End If End Sub

Можно еще упростить и конструкцию With использовать, но это уже другая тема 🙂

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

Источник

Имя листа в excel формула

Определяем имя листа в MS EXCEL

​Смотрите также​ формулировка все же​

​ пример, как я​ получается список имен​Копировать на А10:В12​ тут не было​
​ -61712-​

​То-есть надо преобразовать​ помогут (тут хорошие​kim​на​ по данным о​ с той целью,​​ д. – дочерними​​Обе функции полезны для​Предполагая, что название книги​

​(Формулы/ Вычисления/ Пересчет).​Определим имя листа с​ первична. Как сформулируете​ делаю иногда вручную.​ листов​davaispoem​ таких моих вопросов,​vikttur​

​ название из текстовой​ специалисты).​: Можно так​ДВССЫЛ(D$2&»!$D$6:$D$17″)​ листах в определенном​ чтобы функция ПСТР​ объектами) функция ЛИСТ​ использования в документах,​​ не содержит квадратных​​ПРИМЕНЕНИЕ:​ помощью функции ЯЧЕЙКА().​ вопрос — такое​

​ТЕКУЩЕЙ​: Да, Михаил, ваша​ то не было​: =ДВССЫЛ(E$9&»!»&ячейка)​ ячейки в имя​В противном случае​Guest​Можно даже дедолларизацию​ диапазоне их расположения​ не учитывала символ​ недоступна, поскольку она​ содержащих большое количество​ скобок [ ],​При изменении имени​Имя листа можно определить​

​ решение и получите.​: Может есть какие​книги. Если вторым​ формула — именно​ бы столько эмоций​

​ячейка — ссылка​
​ листа Excel?​ можно просто в​: именно так, всем​ провести :)​ в рабочей книге​ «]».​​ содержит схожую функцию.​​ листов.​

​ запишем формулу для​
​ листа, все ссылки​ с помощью функции​ Давайте из этого​ альтернативные способы получить​ аргументом ПОЛУЧИТЬ.ЯЧЕЙКУ ничего​ то что я​ у наших замечательных,​ на ячеку.​Артем​ нужные книги просто​ спасибо!​ДВССЫЛ(D$2&»!D6:D17″)​ Excel.​31 – максимальное количество​Функция листы имеет следующий​Лист в Excel –​ изъятия из полученного​

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

​ в формулах автоматически​ ЯЧЕЙКА(), записав формулу​ исходить, а не​ формулой имя листа​ не ставить, то​ хотела, вы там​ умных и продвинутых​davaispoem​: Используйте формулу ДВССЫЛ()​ копировать модуль с​xxxxcc xxxxcc​Guest​Guest​ символов в названии​

​ синтаксис: =ЛИСТЫ(ссылка).​ это таблица из​ результата имени листа:​ обновятся и будут​ (см. файл примера):​

​ из того, что​​ в ячейку?​​ будет список имен​ маненько ячейки перепутали,​ мужчин…​: Уважаемые мужчины, специально​slan​ функцией.​: Подскажите как подставить​: Спасибо, то что​: Необходимо упростить процедуру​ листа.​ссылка – объект ссылочного​

  • ​ всех ячеек, отображаемых​ =ПСТР(B1;ПОИСК(«]»;B1)+1;ДЛСТР(B1)-ПОИСК(«]»;B1)-5);​​ продолжать работать. Исключение​​=ПРАВСИМВ(ЯЧЕЙКА(«имяфайла»);ДЛСТР(ЯЧЕЙКА(«имяфайла»))-ПОИСК(«]»;ЯЧЕЙКА(«имяфайла»)))​ здесь должны додумывать​The_Prist​ листов​ но я разобралась,​А меня зовут​ для моей дамскоантиэкселевской​: посмотрите в файле​Или как писал​ в формулу название​ нужно!​
  • ​ ввода формулы таким​=ЛИСТ() – данная функция​ типа, для которого​ на экране и​Если в качестве названия​ составляет функция ДВССЫЛ(),​Если формула вводится в​
  • ​ что Вы имели​: Можно вообще без​АКТИВНОЙ​ по тропинке иду​ Ирина…тут вот…в низу​ логики, помогите пожалуйста​kodeks​ ранее Nic70y Думаю,​ текущего листа​П.С. Я с​
  • ​ образом, чтобы ссылку​​ без параметра вернет​​ требуется определить количество​ находящихся за его​ листа использовано число,​ в которой имя​ новую книгу, то​ ввиду, когда сказали​
  • ​ макросов и всяких​книги.​​ в гору. Для чего​​ написано…​ применить формулу =ДВССЫЛ(E$9&»!»&ячейка),​

​: СПАСИБО​ что на будущее​Юрий М​ функцией ДВССЫЛ и​ на имя листа​ номер текущего листа.​

​ листов. Данный аргумент​
​ пределами (всего 1​ то функция ЯЧЕЙКА()​ листа может фигурировать​ ее сначала нужно​ что-то другое.​ макрофункций, которые как​​Ну а дальше​​ я все это​

​ЛМВ​
​ покажите в файлике​davaispoem​ лучше разобраться . ​​: Текущий = активный?​​ пробовал, не получалось.​​ в формуле можно​​ В результате ее​

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

​ является необязательным. Если​ 048 576 строк​ возвращает название книги​ в текстовой форме​ сохранить. После сохранения,​По вопросу же​

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

​ и функции пользователя​ из имени «Листы»​ затеяла? У меня​: Ирина. Оч. приятно.​ как это сделать.​

  1. ​ пригодится​ Тогда ничего подставлять​—-​ было брать из​
  2. ​ вычисления получим количество​ данный параметр не​ и 16 384​ и листа в​ ДВССЫЛ(«Лист1!A1»). В статье​ возможно, потребуется нажать​ — вряд ли​ имеют проблемы с​ выковыриваем в ячейки​ 6 сводов (6​ Я — Михаил.​Ну не получается​ значение из листа,​Вот как этот​ не надо..​
  3. ​А как еще​ содержимого конкретной ячейки.​ листов в текущей​

​ указан, функция вернет​ столбца). При отправке​ апострофах (‘), например,​ Определение имени листа​ клавишу​

  • ​ получится без макросов​ пересчетом:​ эти самые имены​ участков), на участках​Мне — конечно​ у меня. ​ помогите пожалуйста.​ модуль копируется -​xxxxcc xxxxcc​ сделать, чтобы при​ Т.е. в листе​ книге.​

​ количество листов, содержащихся​

  1. ​ листа на печать​ ‘[_Определяем_имя_листа.xlsx]123456’!$A$1, что может​ для использования в​F9​ и макроформул, т.к.​QQQennedy​ по порядку формулой​
  2. ​ разные адреса, адреса​ понравилось. Если бы​ЛМВ​vikttur​ 1 секунда и​: Нужно​ добавлении листов, их​
  3. ​ «сводные», во 2-й​Пример 2. В книге​ в книге, на​ он может быть​ привести к ошибке​
  4. ​ функции ДВССЫЛ() показано​(Вкладка Формулы, Группа​ формулы не смогут​: Не понятен момент,​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИОШИБКА(«Название листа»&СТРОКА(C1)+СЛЧИС()*0&» -​ же и являются​ мне не нравилось​: Уважаемая davaispoem, женская​: Создаем себе проблемы?​ всё работает​

​дальше буду прописывать​ имена листов автоматически​

  • ​ строчке находятся названия​ Excel содержится несколько​ одном из листов​ разбит на несколько​ при определении имени​ как использовать функцию​ Вычисление, Пересчет).​ определить кол-во листов​ как получить список​ «&ИНДЕКС(Листы;СТРОКА(C1));»»)​ названием листов. Данные​ помогать по екселю​
  1. ​Пара основных правил​xxxxcc xxxxcc​ ВПР , подставлять​ вставлялись во 2-ю​ листов, в которых​ листов. Необходимо:​
  2. ​ которой она была​ страниц. Поэтому нельзя​ листа;​ ЯЧЕЙКА(), чтобы сохранить​Формула вернет имя листа,​
  3. ​ в книге.​ листов данной формулой,​Richman​ в листах идентичные​

​ или учиться (ему​

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

​ не хуже и​ обработки данных: правильная​: спасибо буду пробывать​ значения​ строчку? Тут макрос​ введены однотипные данные.​Вернуть номер текущего листа.​ записана.​ путать термины «лист»​Записав в ячейке​ работоспособность формулы с​ содержащего ячейку с​Михаил С.​ не могли бы​: Выводит название текущего​

​ по составу и​ же) — я​

  1. ​ не лучше мужской.​ структура и одинаковое​xxxxcc xxxxcc​Юрий М​ нужен?​ Листы постоянно добавляются/удаляются.​Вернуть номер листа с​Примечания:​ и «страница».​В2​
  2. ​ функцией ДВССЫЛ().​ вышеуказанной формулой. Если​: Раз уж макросы​ в файле показать?​ листа в любую​ по расположению. Я​ бы не пользовался​
  3. ​ Она просто ДРУГАЯ.​ положение данных. Таблицы​: походил вокруг да​

​: Если формула работает​Diana​ Листов очень много.​ названием «Статические_расчеты».​Данная функция подсчитывает количество​Количество листов в книге​формулу =ЕСЛИОШИБКА(ПОИСК(«‘»;B1);0), получим,​

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

​При изменении имени листа,​ требуется определить имя​ разрешены — не​

  1. ​Понятно, что таким​
  2. ​ ячейку, куда вставили​ хотела сделать свод​
  3. ​ этим форумом.​ Я, опираясь на​ в листах нельзя​ около , и​

​ с активным листом,​

​: а я Вам​ Хотелось бы, чтобы​

  • ​Вернуть номер листа «Динамические_расчеты»,​ всех скрытых, очень​
  • ​ ограничено лишь объемом​ что если название​
  • ​ все ссылки в​ другого листа, то​

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

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

​ остановился на Вашем​ то не нужно.​ чтоли корреляцию массива​ формула в ячейке​ если его ячейка​ скрытых и видимых​ ОЗУ ПК.​ листа – число,​

​ формулах автоматически обновятся​

​ можно использовать туже​ список макросом, а​

​ имя листа, в​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ПРАВСИМВ(ЯЧЕЙКА(«имяфайла»;A1);ДЛСТР(ЯЧЕЙКА(«имяфайла»;A1))-НАЙТИ(«]»;ЯЧЕЙКА(«и­мяфайла»;A1);1))​ чтобы применить его​ Вас мой пример​

  1. ​ считаю, что выбранный​Если только несколько​ варианте, правда размер​ Если ссылается на​ предложила? :)​
  2. ​ D3 и т.д.​ A3 содержит значение​ листов, за исключением​

​Функция ЛИСТ имеет в​

​ то результат =1,​ и будут продолжать​ функцию ЯЧЕЙКА(), но​ не макрофункцией?​ котором находится ячейка​Работает без макросов​

Имя листа в формуле

​ к другим сводам,​​ — устроил или​ Вами подход -​ листов, стоит ли​ самой формулы смущает)​ другой лист, то​Это ж пример​ содержала ссылку на​ 0.​ диаграмм, макросов и​ своем синтаксисе всего​ если текст, то​ работать. Исключение составляет​ с аргументом «адрес».​The_Prist​ (в данном случае​AlexM​ просто меняя в​ нет?​ неверный. Во всяком​ заморачиваться с летучей​Nic70y​ нужно:​ был, а не​ лист, имя которого​Внесем данные в таблицу:​ диалогов.​ 1 аргумент и​

​Для этого нужно, чтобы​​: Как вариант, чтобы​ А2 на текущем​

​: Еще так можно​​ строке(8) свода наименование​Файл я не​
​ случае, с точки​ ДВССЫЛ()?​: =ПСТР(ЯЧЕЙКА(«имяфайла»;A1);ПОИСК(«]»;ЯЧЕЙКА(«имяфайла»;A1))+1;99))​

​ указано в ячейке​​Далее составим формулы для​Если в качестве параметра​ то не обязательный​Слегка модифицируем формулу в​ которой имя листа​ второй аргумент содержал​ формула пересчитывалась по​ листе, т.е. получаем​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ПСТР(ЯЧЕЙКА(«имяфайла»;A1);НАЙТИ(«]»;ЯЧЕЙКА(«имяфайла»;A1);1)+1;99)​ адресов уже другого​ смог выложить, поскольку​ зрения Excel-я. Но​davaispoem​Можно немного сократить,​

​Werty​​Guest​
​ D2. Таким образом,​
​ всех 4-х условий:​
​ была передана недействительная​
​ для заполнения: =ЛИСТ(значение).​
​ ячейке​ может фигурировать в​
​ ссылку на ячейку​

​ Shift+F9 измените свою​​ имя текущего листа)​Хочу заметить, что​
​ свода, которые совпадали​ не разрешено политикой​ если Вы хотите​
​: Одинаковое положение данных​
​ где 99 максимальное​: Вот функция -​: Сорри, не разглядел​ добавив новый столбец​для условия №1 используем​ ссылка, результатом вычислений​значение – необязательный аргумент​

​B3​​ текстовой форме ДВССЫЛ(«Лист1!A1»).​ другого листа, имя​ именованную формулу на​
​ =ПСТР(ЯЧЕЙКА(«filename»;A2);ПОИСК(«]»;ЯЧЕЙКА(«filename»;A2))+1;31)Можно вместо А2​ формула будет работать,​ бы с названиями​

​ предприятия.​​ делать так, как​ не получится, специально​ количество букв в​

​ пользовательская. Может поможет​​ столбцы G и​ с именем нового​ следующую формулу: =ЛИСТ()​
​ является код ошибки​
​ функции, который содержит​для определения названия​ В статье показано​ которого и будет​ такую:​ поставить ссылку на​ если книга была​
​ в листах. Ну​​Поэтому и пришлось​ мне кажется делать​​ разбросала таблички в​​ названии Листа.​

​xxxxcc xxxxcc​​ J ;)​ листа, перетянув формулу​

​для условия №2 введем​​ #ССЫЛКА!.​

​ текстовые данные с​​ листа: =ПСТР(B1;ПОИСК(«]»;B1)+1;ДЛСТР(B1)-ПОИСК(«]»;B1)-5-B2);​ как использовать функцию​ определено. Если формула​=ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1)&ТЕКСТ(ТДАТА();»»)​ ячейку другого листа​ сохранена.​ вот, нагородила. ​ так долго и​ неправильно, то вот​ разные ячейки. Свод​

​vikttur​​: Спасибо , тему​

​Dimius_​​ с ячейки D2,​

​ формулу: =ЛИСТ(«Статические_расчеты»)​​Данная функция недоступна в​ названием листа либо​

Подстановка названия листа в формулу

​Теперь, записав вместо формулы​​ ЯЧЕЙКА(), чтобы сохранить​ =ЯЧЕЙКА(«адрес»;лист2!A1) находится на​QQQennedy​

​ (например лист1) =ПСТР(ЯЧЕЙКА(«filename»;’Лист1′!A2);ПОИСК(«]»;ЯЧЕЙКА(«filename»;’Лист1′!A2))+1;31)И​​QQQennedy​Вот в моем​ нудно писать.​

​ Вам формулы.​​ большой, 50 листов​
​: xxxxcc xxxxcc, по​ можно закрывать​: Вот сделал в​

​ этот процесс был​​для условия №3 запишем​ объектной модели в​ ссылку, для которой​ =ДВССЫЛ(«лист2!A1″) формулу =ДВССЫЛ(B3&»!A1″),​ работоспособность формулы с​ листе1 в ячейке​
​: Вот это и​

​ опять возникает вопрос​​: Добрый день, уважаемые​ примере, так вам​

​Пришлете свой емайл​​Для листа Свод:​ с названием объектов,​

​ Вам скучает п.4.2​​xxxxcc xxxxcc​ файле примера, может​ существенно упрощен.​

​ формулу:​​ связи с наличием​

​ требуется установить номер​​ мы решим задачу:​ функцией ДВССЫЛ().​B1​ требовалось узнать, буду​ с автоматическим получением​ знатоки!​

​ не понятном, все​​ (на мой емайл,​в яч. E11:​ свод в длину,​ Правил.​

​: Werty, Ваша пользовательская​​ кому пригодится. ​
​Guest​Функция ЕСЛИ выполняет проверку​

​ там схожей функции.​​ листа. Если данный​ изменение имени Листа2​
​Имя листа можно определить​

​, то имя листа​​ в макрос запихивать.​ имен листов​

​Такая проблема, в​​ в принципе и​ он — внизу,​ =ДВССЫЛ(E$9&»!»&»A»&СТРОКА(A2)) — и​ как я показала​нужно бы почитать,​
​ функция в других​—-​: Вот, собственно файл​ условия равенства значения,​​
​ параметр не указан,​ не повлияет на​ с помощью функции​ (Лист2) можно определить​ Спасибо​
​The_Prist​ прикрепленном файле на​ свелось, с вашей​ если что) -​

​ протянуть до яч.​​ на примере. Заменой​

​ дабы не давать​​ книгах не работает​П.С. Аппетит приходит​vikttur​ хранящегося в ячейке​Пример 1. При выполнении​

​ функция вернет номер​​ работоспособность формулы.​
​ ЯЧЕЙКА(), об этом​ по формуле:​З.Ы. Все таки​: что спросили -​

​ листе Пример в​​ помощью конечно. спасибо. вот что​ смогу отправить на​ E13​
​ долго.​ дополнительной работы модераторам.​Nic70y​

​ во время еды.​​: Тема рядом с​ A3 листа Динамические_расчеты,​

​ расчетной работы студент​​ листа, в одной​Внимание!​ читайте в статье​=ПСТР(B1;ПОИСК(«]»;B1)+1;ДЛСТР(B1)-ПОИСК(«]»;B1)-5)​ вопрос, озвученный в​ то и получили.​ 1й строке протянута​ получилось. ​ него свой пример​
​в яч. F11:​А если всетаки​Юрий М​: =ЯЧЕЙКА(«имяфайла»;A1)​

​ Т.к. сделать, чтобы​​ Вашей​ нулю или пустому​

​ использовал программу Excel,​​ из ячеек которого​

как в формуле получить ссылку на лист (название листа в некой ячейке)

​Иногда, когда открыто​​ Определяем имя листа.​В этом случае имя​ 1м посте всегда​ Вопрос был про​ формула, выдергивающая названия​VIDEO56​
​ екселевский.​ =ДВССЫЛ(E$9&»!»&»B»&СТРОКА(B2)) — и​ сделать таблички на​: Да и пункт​

​Werty​​ при добавлении листов,​

​ в которой создал​​ она была записана.​

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

​ имя листа, а​​ листов (используется именованный​
​: Добрый день, подскажите​Предоженный Вами пример​ протянуть до яч.​ одном месте, как​ 3.2 тоже. ​: Её нужно добавить​
​ их имена листов​: Или я в​В результате получим:​ книгу из несколько​

​Примечания:​​ ЯЧЕЙКА() может работать​B4​ состоять только из​ Не зря же​ не про список.​ диапазон «страницы»). Если​ формулу позволяющую переименовывать​ — из него​ F13​ свести?​

​xxxxcc xxxxcc​ в Excel. Каким​ автоматически вставлялись во​ танке, или..​

​Пример 3. В книге​​ листов. Для собственного​При работе функции ЛИСТ​ некорректно. Для восстановления​на Листе1 имеется​

​ цифр, т.к. если​​ просите создавать отдельные​ Я и показал.​ попробовать добавить новый​ ячейку по названию​ мало что понятно.​Формулы будут работать,​davaispoem​: я этот ник​ образом — пока​ 2-ю строчку?​Там имя файла,​ Excel содержится несколько​ удобства, студент решил​ учитываются все листы,​ работоспособности формулы нужно​ формула =ДВССЫЛ(«лист2!A1»). Если​ в качестве названия​ темы по несвязанным​QQQennedy​ лист, значения в​

​ листа!​​А просто по​
​ если:​: А если всетаки​

​ создал лет с​​ сам не знаю.​Файл удален​ а мне имя​ листов. Необходимо определить​ в ячейках A2​ которые являются видимыми,​
​ нажать клавишу​ Лист2 переименовать в​

​ листа использовано число,​​ с 1м постом​: Данный вопрос задан​ строке 1 на​KSV​ опыту — часто​1. названия листов​ сделать таблички на​ 8 назад, как​ Пока сам ищу​- велик размер​ листа надо. ​ общее количество листов,​ и B2 каждого​ скрытыми и очень​F9​ Лист3, то вышеуказанная​ то функция ЯЧЕЙКА()​
​ вопросам. Заканчиваем полемику,​
​ с целью решить​ листе пример не​: Добрый день!​ решение может быть​
​ и шапки таблицы​ одном месте, как​ на меня он​ ответ​
​ — [​Diana​
​ а также число​ листа выводить данные​ скрытыми. Исключениями являются​(Формулы/ Вычисления/ Пересчет).​
​ формула работать не​ возвращает название книги​ ещё раз спасибо​
​ эту проблему, т.к.​ обновляются. Как справиться​UDF​
​ проще, чем казалось​ на листе Свод​ свести?​ ни кого не​xxxxcc xxxxcc​МОДЕРАТОРЫ​: так?​ листов, содержащихся между​

​ о названии листа​​ диалоги, макросы и​ПРИМЕЧАНИЕ:​ будет. Чтобы работоспособность​ и листа в​ XD​ как видно в​ с этой проблемой?​VIDEO56​ в начале (я​ — совпадают.​Z​
​ обижает, и на​: мне нужно имя​]​

​Guest​​ листами «Статические_расчеты» и​ и его порядковом​
​ диаграммы.​С помощью обычных​ формулы сохранилась -​ апострофах (‘) и​vikttur​ файле, получать имя​QQQennedy​: KSV, Спасибо. Норм​
​ про себя).​2. в листах​: М-да: «. свод​ многих форумах люди​
​ листа, или «имя​Diana​: нет. Нужно, чтобы​ «Экономические_расчеты».​
​ номере соответственно. Для​Если аргументом функции является​ формул (не VBA)​
​ определим имя листа​ формула вернет неправильный​: Первичный. Естественно. Но​ листа в ячейке​: наверное нужно добавить,​ работает!​ps​
​ данные занесены в​ в длину, как​ на него адекватно​
​ файла» даст имя​: 136 КБ! :)​ протягивая формулу из​Исходная таблица имеет вид:​ этого он использовал​ текстовое значение, которое​
​ невозможно определить имя​
​ с помощью функции​ результат. Справиться с​ заходящие в тему​ я уже могу​ добавление/удаление листов происходит​_Boroda_​На этом сайте​ диапазон ячеек А1:В4.​ я показала. » -​ реагируют​

​ листа?​​ уволят :)​ ячейки D3, не​Общее количество листов вычислим​ следующие формулы:​

​ не соответствует названию​
​активного листа​
​ ЯЧЕЙКА() (см. файл​

​ этим поможет формула​​ часто (нехватка времени,​The_Prist​ в макросе, но​: Без макросов.​ — действительно много​Пока окончательный смысл​ еще один из​О цитировании: понял​Nic70y​Diana​ было необходимости потом​ по формуле:​Описание аргументов для функции​ ни одного из​и адрес​ примера).​ =ПОДСТАВИТЬ(C1;»‘»;»»), которая удалит​ не очень интересно)​: ну это да.​ типичные методы пересчета​1. Формулой, но​ замечательных, умных и​ Вашей идеи мне,​ примеров, как бы​ свою ошибку ,​: =ПСТР(ЯЧЕЙКА(«имяфайла»;A1);ПОИСК(«]»;ЯЧЕЙКА(«имяфайла»;A1))+1;ДЛСТР(ЯЧЕЙКА(«имяфайла»;A1)))​: так не пойдет?​ переименовывать имя листа​Для определения количества листов,​
​ ПСТР:​ листов, содержащихся в​активной ячейки​Запишем на Листе1 в​ символ апострофа.​ просматривают сообщения «по​ Ведь прям на​

Присвоение ячейке имени листа (Формулы/Formulas)

​ формул в VBA​​ там должна быть​ продвинутых. Мужчин и​ например, непонятен.​ сказать помягшее, -​

​ постараюсь свести к​​Так будет имя​
​Guest​

​ (Лист1 на Лист2​​ содержащихся между двумя​ЯЧЕЙКА(«имяфайла») – функция, возвращающая​

​ книге, будет возвращена​​.​
​ ячейке​Также предполагается, что имя​ дигонали», видят вопрос​ языке крутится список​ (типа прописать Application.Calculate)​ ссылка на ячейку​
​ женщин. Мужчин -​Но когда Вы​ своебразной дамскоантиэкселевской логики. ​ минимуму цитирование.​
​ листа.​: не-а, хотя за​ и т.д.), а​
​ указанными листами, запишем​
​ текст, в котором​ ошибка #НД.​Функция ЛИСТ в Excel​​B1​​ файла не содержит​ — дают ответ.​ листов книги, когда​ не помогают​ того листа, имя​​ больше. Причину мы​​ по выбранной Вами,​
​ И как потом​Юрий М​Werty​ помощь спасибо. Нужно​ чтоб имя листа​
​ формулу:​ функция ПСТР выполняет​

​Если в качестве аргумента​​ возвращает числовое значение,​формулу =ЯЧЕЙКА(«адрес»;лист2!A1) Формула​ символа закрывающая квадратная​Тут Вам замечание:​
​ просят имя листа​
​Vik_tor​

​ которого выводим -​​ (все) уже обсудили.​ ​ не лучшей, на​ ​ общие бабки подбивать,​: Перечитайте Правила и​: Вот с форума​ получить диапазон, точнее​

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

​ бралось автоматически из​​Статические_расчеты:Экономические_расчеты!A2 – ссылка на​ поиск заданного количества​
​ функции было передано​ соответствующее номеру листа,​ вернет результат [_Определяем_имя_листа.xlsx]Лист2!$A$1,​ скобка ( ]​ название темы («Пересчет​Могу с таким​: В приложенном файле​ не интересно.​ Никуда не деться,​ мой взгляд, тропинке​ выборку по именам/продуктам​ сделайте вывод.​ нашёл:​

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

​ формулы») не отражало​​ же успехом сказать,​ нет именованного диапазона​

​2. Хоть макросов​​ статистика — вещь​ подниметесь на вершину,​

​ делать. Не первый​​h1dex​Источник: hardforum.ru/t56638/​ всех листов. Нашел​ строке (с именами​ листов между «Статические_расчеты»​ случае вернется значение​

​ ее вычислений будет​​ ссылка, переданная функции​ ячейки с указанием​ВНИМАНИЕ!​ задачи. И если​

​ что Вы придираетесь​​QQQennedy​ в файле и​ упрямая :)​ то однажды оттуда​ раз подобный вопрос,​: ..​

​xxxxcc xxxxcc​​ в Plex подобный​ листов). Сделал скриншот,​ и «Экономические_расчеты» включая​ «C:UserssoulpDesktop[ЛИСТ_ЛИСТЫ.xlsx]Статические расчеты», где​ являться ошибка #ССЫЛКА!.​
​ в качестве параметра.​ названия книги и​Иногда, когда открыто​ бы Вы четко​ к решению -​: мой косяк, перезалил​ нет, но они​vikttur​ увидите более легкие​ и не первый​kodeks​: мне кажется я​ макрос, создающий оглавление.​ может так понятнее​ эти листы.​

​ после символа «]»​​В рамках объектной модели​Функция ЛИСТЫ в Excel​ имени листа (ссылка​ несколько книг, функция​ обозначили проблему в​ оно так же​

​ файл​​ должны быть разрешены.​: Учитесь. Политика предприятия,​ пути :)​ раз советую маленькую​: Как в формуле​ такое не осилю(​ Попробую разобраться, как​

​ будет. ​​Для получения искомого значения​ находится искомый текст​ (иерархия объектов на​ возвращает числовое значение,​ должна быть на​
​ ЯЧЕЙКА() может работать​ названии темы, возможно,​ даст список листов,​Vik_tor​Именами (Контрл F3).​ понимаешь ли. Нормальный​davaispoem​ универсальную бесплатную приблуду​
​ получить ссылку на​Werty​ его переделать для​Казанский​ было вычтено число​ – название листа.​ VBA, в которой​ которое соответствует количеству​ столбец с названием​ некорректно. Для восстановления​ и помощь пришла​ если создать формулу​: Попробуйте макросом же​
​ Там имя «Листы»​ способ наладить контакты​: Большое вам спасибо!​ для сбора данных​ ячейку находящуюся на​: Тогда сделайте отдельную​ моей задачи​

​: Ну да, ДВССЫЛ.​​ 2.​НАЙТИ(«]»;ЯЧЕЙКА(«имяфайла»))+1 – функция, возвращающая​ Application является главным​ листов, на которые​ из одной буквы,​

​ работоспособности формулы нужно​​ бы быстрее и​ на каждый лист​ произвести замену =​ с формулой​ :)​
​ Я надеюсь, вам​

​ — как вариант​​ другом листе, а​ тему по этому​Diana​Замените ссылки типа​
​В результате получим следующее:​ номер позиции символа​ объектом, а Workbook,​ предоставлена ссылка.​ например, ссылка лист2!AВ1​ нажать клавишу​ качественнее.​Поэтому давайте без​ на = в​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ПОДСТАВИТЬ(ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1;ПОЛУЧИТЬ.ЯЧЕЙКУ(66;Фрося!$A$1));»[«&ПОЛУЧИТЬ.ЯЧЕЙКУ(66;Фрося!$A$1)&»]»;)​В А10 лучше:​

​ все это самому​​ (полуфабрикат) вложение со​ имя листа взать​ вопросу — точно​: нда. ​Лист1!$D$6:$D$17​Формула выводит подробную информацию​ «]», единица добавлена​
​ Worksheer и т.​Примечания:​ не годится);​F9​Тему переименовал.​ подобных высказываний -​ первой строке листа​В имени «Листы»​=СУММЕСЛИ($C$9:$J$9;A$9;$C10:$J10)​ понравилось…ведь если бы​
​ скрином внутри. ;)​

Источник

Хитрости »

1 Май 2011              136640 просмотров


Как узнать существует ли лист в книге?

Довольно часто при добавлении листов в книгу кодом необходимо удостовериться существует ли уже лист с таким именем или же нет. Т.к. если уже существует, то попытка создать лист с таким же именем неизбежно приведет к ошибке. Можно, конечно, поставить обработчик ошибки On Error.

Sub Add_New_Sheet()
    On Error Resume Next
    Sheets.Add(, Sheets(Sheets.Count)).Name = "Новый лист"
End Sub

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

Sub Add_New_Sheet()
    Dim wsSh As Worksheet
    On Error Resume Next
    Set wsSh = Sheets("Новый лист")
    If wsSh Is Nothing Then Sheets.Add(, Sheets(Sheets.Count)).Name = "Новый лист"
    'здесь можно либо активировать лист, либо производить еще какие действия
    'wsSh.Activate
End Sub

Если предполагается использовать такую проверку более одного раза в коде, то имеет смысл вынести проверку в отдельную функцию

Function Sh_Exist(wb As Workbook, sName As String) As Boolean
    Dim wsSh As Worksheet
    On Error Resume Next
    Set wsSh = wb.Sheets(sName)
    Sh_Exist = Not wsSh Is Nothing
End Function

Функция проверяет наличие листа в указанной книге и возвращает True, если лист есть в книге и False, если листа нет.
wb — объект Workbook, наличие листа в которой надо проверить.
sName — имя листа, наличие которого необходимо проверить.
Код функции Sh_Exist необходимо поместить в стандартный модуль и тогда для проверки наличия листа достаточно будет одной строки кода:

Sub Add_New_Sheet()
    If Not Sh_Exist(ActiveWorkbook, "Новый лист") Then
        ActiveWorkbook.Sheets.Add(, ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)).Name = "Новый лист"
    End If
End Sub

«Новый лист» — вместо этого текста указывается имя листа, наличие которого необходимо проверить.
Если проверять надо не в активной книге, а в какой-либо другой, то вместо ActiveWorkbook необходимо указать эту книгу. Например, если книга называется «Отчет.xlsx», то код будет таким:

Sub Add_New_Sheet()
    If Not Sh_Exist(Workbooks("Отчет.xlsx"), "Новый лист") Then
        Workbooks("Отчет.xlsx").Sheets.Add(, Workbooks("Отчет.xlsx").Sheets(Workbooks("Отчет.xlsx").Sheets.Count)).Name = "Новый лист"
    End If
End Sub

Хотя в данном случае практичнее выделить отдельную переменную:

Sub Add_New_Sheet()
    Dim wbCheck As Workbook
    Set wbCheck = Workbooks("Отчет.xlsx")
    If Not Sh_Exist(wbCheck, "Новый лист") Then
        wbCheck.Sheets.Add(, wbCheck.Sheets(wbCheck.Sheets.Count)).Name = "Новый лист"
    End If
End Sub

Можно еще упростить и конструкцию With использовать, но это уже другая тема :)

Также см.:
Как проверить открыта ли книга?


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

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


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



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

Дабы не создавать новую тему,

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

воспользовался примером Busine2012, и Казанский, написал код:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
   Sub ttt()
    
    'Создаём переменную, в которую поместим имя листа.
    Dim sName As String
    Dim aName As String
    
    'Создаём переменную, с помощью которой будем обращаться к нужному листу.
    Dim oSheet As Excel.Worksheet
    'Помещаем в переменные имена листов.
    sName = "ДАННЫЕ"
    aName = "РЕЗУЛЬТАТЫ"
    bName = "ИТОГИ
 
    On Error Resume Next
    
        'Присваиваем листу имя oSheet.
Set oSheet = Worksheets(sName)
  
    
        If Worksheets(sName) Is Nothing Then
            MsgBox "Проверь имя листа ДАННЫЕ.", vbCritical
   Else
    
Set oSheet = Worksheets(aName)
    
    If Worksheets(aName) Is Nothing Then
            MsgBox "проверь имя листа РЕЗУЛЬТАТЫ.", vbCritical
    Else
Set oSheet = Worksheets(bName)
    
    If Worksheets(bName) Is Nothing Then
            MsgBox "проверь имя листа ИТОГИ.", vbCritical
               Else
            MsgBox "Работа разрешена.", vbCritical  ' работа макроса
    End If
 End If
 End If
    
End Sub

Макрос работает.

Вопрос: можно ли упростить код для проверки имен листов, если число проверяемых листов на правильность имени будет больше 10 (без ухудшения производительности)?

Было бы конечно лучше, если макрос сам переименовывал неправильные названия без участия пользователя..

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

Добавлено через 25 минут

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

Было бы конечно лучше, если макрос сам переименовывал неправильные названия без участия пользователя..

Visual Basic
1
Лист1.Name="Данные"

Добавлено через 5 минут
Но код проверяет (соответственно и переименовывает неправильные листы) по одному за работу всего цикла. Хотелось бы чтобы сразу все листы проверил, и все исправил.

Добавлено через 5 минут
Возникла мысль, хотелось бы узнать мнение о целесообразности,

Может обойтись без проверки листов и сразу все листы переименовать?

 

seelena

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

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

У меня макрос должен копировать лист, вставлять, а затем переименовывать в определенное название.  
Подскажите, пожалуйста, как сделать так, что перед этим, была проверка, существует ли уже лист с этим названием?

 

for each ws in sheets.collection  
if newws=ws.name then  
next

 

seelena

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

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

{quote}{login=}{date=18.03.2010 03:39}{thema=}{post}for each ws in sheets.collection  
if newws=ws.name then  
next{/post}{/quote}  

  А не подскажите, как правильно это добавить? Как не пытаюсь, ошибки выдает(  

  У меня сейчас:  

  On Error Resume Next  
   Sheets(«Прайс лист»).Select  
   Sheets(«Прайс лист»).Copy Before:=Sheets(1)  
   Sheets(«Прайс лист(2)»).Select  
   Sheets(«Прайс лист(2)»).Name = «Бланк заказа»  
   Sheets(«Бланк заказа»).Select

 

Hugo

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

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

Зачем столько селектов?  

  Sub tt()  
Sheets(«Прайс лист»).Copy Before:=Sheets(1)  
Sheets(1).Name = «Бланк заказа»  
Sheets(«Бланк заказа»).Select  
End Sub

 

seelena

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

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

{quote}{login=Hugo}{date=18.03.2010 04:29}{thema=}{post}Зачем столько селектов?  

  Sub tt()  
Sheets(«Прайс лист»).Copy Before:=Sheets(1)  
Sheets(1).Name = «Бланк заказа»  
Sheets(«Бланк заказа»).Select  
End Sub{/post}{/quote}  

  А как сюда проверку вставить на то, есть ли уже такой лист или нет?

 

Dophin

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

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

Sub tt()  
dim sh as worksheet  
for each sh in worksheets  
if sh.name=»Прайс лист» then  
msgbox «есть такой лист»  
else  
Sheets(«Прайс лист»).Copy Before:=Sheets(1)  
Sheets(1).Name = «Бланк заказа»  
Sheets(«Бланк заказа»).Select  
end if  
End Sub

 

Dophin

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

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

Sub tt()  
dim sh as worksheet  
for each sh in worksheets  
if sh.name=»Бланк заказа» then  
msgbox «есть такой лист»  
exit sub  
end if  
next sh  

  Sheets(«Прайс лист»).Copy Before:=Sheets(1)  
Sheets(1).Name = «Бланк заказа»  
Sheets(«Бланк заказа»).Select  
End Sub  

  то есть вот так конечно)

 

Юрий М

Модератор

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

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

Строка Sheets(«Бланк заказа»).Select на мой взгляд лишняя — новый лист (копия) сам активируется.

 

Igor67

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

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

#9

18.03.2010 22:26:06

Есть такой замечательный ресурс  

http://msoffice.nm.ru/faq/macros.htm  

А это подборка вариантов определения наличия определенного листа в книге  
Private Function WorksheetIsExist(iName$) As Boolean  
‘***********************************************’  
‘   Дата создания 01/01/2005                    ‘  
‘   Автор Климов Павел Юрьевич                  ‘  
‘  

http://www.msoffice.nm.ru

                  ‘  
‘***********************************************’    
   On Error Resume Next  
   WorksheetIsExist = IsObject(Worksheets(iName$))  
End Function  

  Private Function WorksheetIsExist(iName$) As Boolean  
   On Error Resume Next  
   WorksheetIsExist = (TypeOf Worksheets(iName$) Is Worksheet)  
End Function  

  Private Function WorksheetIsExist(iName$) As Boolean  
   On Error Resume Next  
   WorksheetIsExist = (TypeName(Worksheets(iName$)) = «Worksheet»)  
End Function  

  Private Function WorksheetIsExist(iName$) As Boolean  
   On Error Resume Next  
   WorksheetIsExist = (VarType(Worksheets(iName$)) = vbObject)  
End Function  

  Private Function WorksheetIsExist(iName$) As Boolean  
   On Error Resume Next  
   WorksheetIsExist = Len(Worksheets(iName$).Name) > 0  
End Function  

  Private Function WorksheetIsExist(iName$) As Boolean  
   On Error Resume Next  
   WorksheetIsExist = Worksheets(iName$).Index > 0  
End Function  

  Пример вызова любой из вышеопубликованных авторских функций :  

  Private Sub Test()  
   MsgBox WorksheetIsExist(«Имя_Рабочего_Листа»)  
End Sub


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

ЯЧЕЙКА()

.

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

ЯЧЕЙКА()

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

файл примера

):

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

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

F9

(Вкладка

Формулы

, Группа

Вычисление

,

Пересчет

).

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

ЯЧЕЙКА()

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

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

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

находится на

листе1

в ячейке

B1

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

Лист2

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


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

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

ЯЧЕЙКА()

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

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

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

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

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

( ] ).


ВНИМАНИЕ

!

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

ЯЧЕЙКА()

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

F9

(

).


ПРИМЕНЕНИЕ:

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

ДВССЫЛ()

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

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

. В статье

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

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

ЯЧЕЙКА()

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

ДВССЫЛ()

.

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

имя листа в Excel

Имя листа Excel в расчетах

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

Для таких расчетов существует замечательная функция =ДВССЫЛ()

По факту в ней необходим один аргумент — ссылка на ячейку. Есть еще необязательный аргумент для определения типа ссылок (R1C1 или A1 — по умолчанию A1).

Чтобы указать имя листа в аргументе (ссылку), нужно воспользоваться возможностью сцепить. Разберем на примере

=ДВССЫЛ(C$2&"!b2")

C$2 — ячейка в которой записано имя листа, на который ссылаемся (в нашем случае Сумма1 и Сумма2 )

& — символ сцепки

«» — значит, что внутри ячеек воспринимается Excel как текст

!b2 — текстовое значение той ячейки, на которую ссылаемся

Решение примера выше можно посмотреть в примере.

Вернуть имя листа в Excel в ячейку

Проще всего, наверное, макросом. Создаем макрос и вносим в него такой текст:

Sub ShName()
Range("A1") = ActiveSheet.Name
End Sub

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

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

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

Мы используем функцию ПРАВСИМВ для того, чтобы отделить нужное количество символов в возвращенном полном имени файла при помощи ЯЧЕЙКА(«имяфайла») — например, C:Users[Имя листаxlsb]Лист1

Далее мы считаем количество ячеек, которых нужно оделить справа — т.е. находим полную длину пути файла (ДЛСТР(ЯЧЕЙКА(«имяфайла»))) и вычитаем из нее количество символов до знака ]

В итоге получаем, что из текста C:Users[Имя листаxlsb]Лист1 нам с правой стороны нужно отделить 5 символов — Лист1

Формулу можно ввести в любую ячейку, с этим не должно возникнуть проблем.

Имя файла в Excel

Так же можно вернуть в ячейке имя файла Excel

Формула будет иметь вид:

=ЯЧЕЙКА("имяфайла")

«имяфайла» — это именно такой аргумент, так и надо записывать.

Многие сталкивались с файлами Ексель, в которых создано огромное количество листов. Чтобы найти нужный лист нужно прокрутить все созданные в книге листы.

Но есть более простой способ быстро открыть нужный лист.

Щелкните правой кнопкой мыши на кнопки прокрутки листов, которые находятся слева от названия листов и выберите нужный лист:

Как снять пароль в Excel? Три рабочих способа снятия пароля.

Способ 1. (Используем программу) Ищем в поисковике и загружаем программу

Как собрать несколько книг Excel в одну?

Например, мы имеем много рабочих книг Excel, и мы хотим

Что такое макрос и куда его вставлять в Excel?

Нам в работе иногда не хватает стандартных возможностей Эксель и приходится напрягать

Как добавить абзац в ячейке Excel?

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

Как посчитать количество уникальных значений в колонке Excel?

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

Отсортировать уникальные значения в Excel

Предположим, что у нас есть такая таблица с перечнем соглашений,

Как сделать и добавить выпадающий список в Excel?

В Excel есть одна интересная особенность, а именно возможность вводить

Как быстро перейти в нужный лист книги Excel?

Многие сталкивались с файлами Ексель, в которых создано огромное количество

Определить, есть ли лист в книге с заданным именем

Есть ли лист с определенным именем в книге?
Коллеги, подскажите, как определить это? Спасибо!

Определить существует ли лист в книге
Привет всем. Подскажите пожалуйста как определить существует ли лист в книге имя которого.

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

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

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

Решение

AndreA SN, я, конечно, рискую, но ради Вас готов разок получить по шее.
Вы задаёте так много интересных вопросов по Excel’ю, ответы на которые давным-давно лежат в сети.

а у меня к Вам один вопрос: Вы в курсе, что существуют поисковые системы?

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

Решение

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

Решение

Ну и мои 5 копеек.

Можно использовать ADODB-соединение к книге екселя, открыть рекордсет для OpenSchema с параметром adSchemaTables. Проход по рекордсету даст все листы книги. Поиск по рекордсету позволит найти заданное имя. Метод удобен для поиска листов из внешнего файла.

да в курсе я))) но такого количества толковых ответов да еще сконцентрированных в одном месте Вы там не найдете))) Поисковая система для профи))) а я, слава Богу, вопросы пока учусь задавать. При этом решаю свои насущные задачки. Вот что гарантированно могу сказать — то не деньги я Вашими ответами зарабатываю)))
А вообще по моему профилю я не считаю, сколько раз мне задают один и тот же вопрос. Я просто отвечаю. А программирование — совсем не мой профиль)))
а если серьезно — пока тут висит один мой вопрос — я занимаюсь другими. На расшифровку поисковика нет совсем времени. И английский плохо знаю опять же. Вообщем благодарствую сказал.

Добавлено через 3 минуты
Кстати, о невеждах, ikki)))

Слепой иногда пройдет там, где зрячий оступится)))

Не вижу здравого смысла в сообщении #4: это засорение интернета ненужной информацией по данному вопросу и усложнение для непрограммистов, которым просто нужно написать макрос.

После очистки всех имен в списке Менеджера имен на листе в Excel, я попытался переместить лист снова и снова, получив всплывающее сообщение «имя уже в пункте назначения».

2 ответа

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

Вы можете попробовать эти шаги, чтобы избавиться от проблемы.

  1. Закройте все открытые книги, если они есть. неисправность Excel.
  2. Перезагрузите Excel и откройте книгу.
  3. Нажмите Ctrl+F3 и отфильтруйте именованные диапазоны на ошибки.
  4. Удалите все ошибочные именованные диапазоны.
  5. Закончите с помощью OK.
  6. Сохранить & amp; закройте рабочую книгу.

Теперь, когда вы копируете или перемещаете листы, вы не должны сталкиваться с этой ошибкой.

  1. Возможно, у вас есть несколько формул, с меткой Named Ranges не может быть удалены, так что лучше RENAME NAMED RANGES у источника избегайте дубликатов. Я думаю, Rename это наилучшее решение.

Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

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

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

Имя «Интерестратес» уже существует. Нажмите кнопку Да, чтобы использовать эту версию имени, или кнопку Нет, чтобы переименовать версию «Интерестратес», которую вы перемещаете или копируете.

Примечание: Диалоговое окно «конфликт имен» появится для каждого экземпляра конфликтующего диапазона имен.

Решение

Если появится диалоговое окно выше, выполните одно из указанных ниже действий.

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

Что происходит при нажатии кнопки «Да»

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

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

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

В разделе новое имя введите новое имя диапазона. Новое имя не будет принято, если оно

начинается с буквы или знака подчеркивания,

— Это ссылка на ячейку, например A1, А123 или КСФД21.

содержит пробелы или символы (,/, *, [,]. ) или

совпадает с именем другого диапазона в книге, в которую выполняется копирование.

Нажмите кнопку ОК.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.

я работал над электронной таблицей Microsoft Excel 2007 в течение нескольких дней. Я работаю с основным шаблоном, таким как sheet, и неоднократно копирую его на новый лист. До сегодняшнего дня это происходило без проблем. Однако в середине сегодняшнего дня это вдруг изменилось, и я не знаю, почему. Теперь, всякий раз, когда я пытаюсь скопировать лист, я получаю около десяти диалоговых окон, каждый из которых имеет другой объект диапазона имен (показан ниже как «XXXX»), и я нажимаю да для каждого из них:

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

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

объекты диапазона имен ссылаются на ячейки в лист. Например, E6 называется именем диапазона PRE на нескольких листах (и все вместе) и некоторые формулы относятся к PRE вместо $E . Один из «XXXX» выше это PRE . Эти диапазоны имен должны разрешаться только в пределах листа, на котором они отображаются. Это не было проблемой раньше, несмотря на тот же диапазон имен, существующий на нескольких листах раньше. Я хочу сохранить диапазон имен.

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

ищем в Name Manager Я вижу, что диапазоны имен жалуются на шоу дважды, один раз в область Template и снова как scope Workbook . Если я удалю область Template те, предупреждение уходит на копию, однако, я получаю кучу ошибок #REF. Если я удалю область Workbook ones, все кажется в порядке, и предупреждения о копировании тоже уходят, так что, возможно, это ответ, но я нервничаю о том, какой эффект это удаление будет иметь и интересно, как Workbook они появились в первую очередь.

будет ли безопасно просто удалить Workbook Диспетчер имен ограниченные записи и как они могли бы появиться без моего ведома с самого начала?

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