Excel поиск листа по имени формула

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

  • Поиск по имени рабочего листа с VBA
  • Поиск по имени рабочего листа с помощью «Создать список имен листов» Kutools for Excel    (5 шаги)
  • Поиск по имени рабочего листа с помощью панели навигации Kutools for Excel    (2 шаги)

Поиск по имени рабочего листа с VBA

Этот метод представит макрос VBA для простого поиска на листе в активной книге.

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

2. Нажмите Вставить > Модули, а затем вставьте следующий код VBA в новое открывающееся окно модуля.

VBA: поиск по имени листа

Sub SearchSheetName()
Dim xName As String
Dim xFound As Boolean
xName = InputBox("Enter sheet name to find in workbook:", "Sheet search")
If xName = "" Then Exit Sub
On Error Resume Next
ActiveWorkbook.Sheets(xName).Select
xFound = (Err = 0)
On Error GoTo 0
If xFound Then
MsgBox "Sheet '" & xName & "' has been found and selected!"
Else
MsgBox "The sheet '" & xName & "' could not be found in this workbook!"
End If
End Sub

3, нажмите F5 ключ или щелкните Run кнопку для запуска этого VBA.

4. Появится диалоговое окно поиска листа, введите имя листа, на котором вы будете искать, и нажмите кнопку OK кнопка. Смотрите скриншот:

Появится другое диалоговое окно, в котором сообщается, найден рабочий лист или нет. Просто закрой это.

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


Поиск по имени рабочего листа с помощью «Создать список имен листов» Kutools for Excel

В приведенном выше VBA может быть непросто найти рабочий лист, если вы не можете точно вспомнить и ввести имя рабочего листа. Этот метод познакомит Kutools for ExcelАвтора Создать список имен листов утилита для поиска и простого перехода к рабочему листу.

1. Нажмите Кутулс Плюс > Рабочий лист > Создать список имен листов , чтобы открыть диалоговое окно «Создать список имен листов». Смотрите скриншоты:
поиск документов по листу 01

2. В открывшемся диалоговом окне Create List of Sheet Names укажите параметры: (1) проверить Содержит список гиперссылок вариант; (2) введите имя для нового созданного индексного листа; (3) указать место нового индексного листа; и (4) перечислите все имена рабочих листов в одном столбце индексного листа.

3, Нажмите Ok кнопка. Теперь создается новый индексный лист, который помещается перед всеми листами.

4. Перейдите к индексной странице и нажмите Ctrl + F одновременно с клавишами, чтобы открыть диалоговое окно «Найти и заменить», введите ключевое слово в поле Найти то, что и нажмите Найти все кнопка. Смотрите скриншот:

Теперь все имена листов, содержащие ключевые слова, найдены и перечислены в нижней части диалогового окна «Найти и заменить». См. Диалоговое окно выше.

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

Демо: поиск по имени листа в Excel


Поиск по имени рабочего листа с помощью панели навигации Kutools for Excel

Если у вас есть Kutools for Excel установлен, вы можете легко искать рабочие листы по имени листа в области навигации. Пожалуйста, сделайте следующее:

Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30-день, кредитная карта не требуется! Get It Now

1. По умолчанию открывается панель навигации. Если закрыто, нажмите Кутулс > Область переходов чтобы отобразить панель навигации, а затем щелкните  (Рабочая книга и лист) в левой части области навигации.

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

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

Демонстрация: поиск по имени рабочего листа с помощью панели навигации Kutools for Excel


Статьи по теме:


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

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

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

вкладка kte 201905


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

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

офисный дно

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


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


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

ЯЧЕЙКА()

.

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

ЯЧЕЙКА()

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

файл примера

):

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

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

F9

(Вкладка

Формулы

, Группа

Вычисление

,

Пересчет

).

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

ЯЧЕЙКА()

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

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

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

находится на

листе1

в ячейке

B1

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

Лист2

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


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

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

ЯЧЕЙКА()

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

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

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

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

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

( ] ).


ВНИМАНИЕ

!

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

ЯЧЕЙКА()

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

F9

(

).


ПРИМЕНЕНИЕ:

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

ДВССЫЛ()

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

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

. В статье

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

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

ЯЧЕЙКА()

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

ДВССЫЛ()

.

Один посетитель сайта (Валерий) недавно спросил: «Есть ли инструмент поиска листа в книге по его названию». Возможное решение – просто выбрать лист из списка (рис. 1). Для этого кликните правой кнопкой мыши в левом нижнем углу экрана на одной из кнопок прокрутки.

Рис. 1. Выбор листа из списка

Рис. 1. Выбор листа из списка

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

Однако, если у вас десятки (а то и сотни) листов, а также, если вы хотите найти лист с определенным названием, такой метод вряд ли будет хорош. Создайте отдельную страницу в книге, на которой разместите указатель, связав гиперссылкой каждую строку с соответствующим листом. Вы сможете создать фильтр или находить листы контекстным поиском. Указатель можно создать двумя способами. [1]

Возможно, вам покажется привлекательной идея создать указатель вручную. Создайте новый лист, назовите его Указатель или подобным именем, введите имена всех остальных листов и свяжите записи гиперссылками с соответствующими листами, пройдя по меню ВставкаГиперссылка (рис. 2) или нажав сочетание клавиш Ctrl+K (К английское). Этот способ подойдет для книг с небольшим числом листов, которые будут меняться нечасто. Но даже в этом случае может быть затруднительно поддерживать актуальность указателя.

Рис. 2. Можно создать указатель вручную с помощью гиперссылок

Рис. 2. Можно создать указатель вручную с помощью гиперссылок

Более универсальный, но и более сложный путь – добавить код VBA. В этом случае указатель будет создаваться заново каждый раз при переходе на лист с указателем (к сожалению, это может замедлять работу, если листов много).

1. Сохраните вашу книгу как файл с поддержкой макросов (рис. 3)

Рис. 3. Книга Excel с поддержкой макросов

Рис. 3. Книга Excel с поддержкой макросов

2. Вставьте в вашу книгу новый лист и назовите его удобным именем — например, Указатель.

3. Правой кнопкой мыши щелкните ярлычок листа и в контекстном меню выберите команду Исходный текст (рис. 4).

Рис. 4. Исходный текст

Рис. 4. Исходный текст

4. В открывшемся окне введите код VВА (рис. 5). Во избежания ошибок, рекомендую код скопировать из модуля в файле Excel.

Private Sub Worksheet_Activate()

Dim wSheet As Worksheet

Dim l As Long

l = 1

With Me

.Columns(1).ClearContents

.Cells(l, 1) = "INDEX"

.Cells(l, 1).Name = "INDEX"

End With

For Each wSheet In Worksheets

If wSheet.Name <> Me.Name Then

l = l + 1

With wSheet

.Range("A1").Name = "Start" & wSheet.Index

.Hyperlinks.Add Anchor:=.Range("A1"), Address:="", SubAddress:= _

"Index", TextToDisplay:="Назад к указателю"

End With

Me.Hyperlinks.Add Anchor:=Me.Cells(l, 1), Address:="", _

SubAddress:="Start" & wSheet.Index, TextToDisplay:=wSheet.Name

End If

Next wSheet

End Sub

Рис. 5. Код VBA

Рис. 5. Код VBA

5. Нажмите Alt+Q, чтобы вернуться обратно к рабочей книге, и сохраните изменения. Не пугайтесь, что на листе Указатель ничего не произошло, и что вы не увидите ни одного макроса, если пройдете по меню ВидМакросы. Код устроен таким образом, что его нельзя запустить никаким образом, кроме как перейдя на лист Указатель. Поэтому перейдите на любой лист, а затем вернитесь на лист Указатель. Наблюдайте, как работает макрос!

Обратите внимание, что ячейкам А1 на каждом листе присваивается имя Start#, где # – уникальное целое число, представляющее номер листа в указателе. Это гарантирует, что у ячейки А1 каждого листа будет уникальное имя. Если у ячейки А1 на вашем листе уже есть имя, необходимо каждое упоминание ячейки А1 в коде изменить на что-то более подходящее — например, любую неиспользуемую ячейку листа. Увидеть образовавшийся список имен можно, пройдя по меню ФормулыДиспетчер имен (рис. 6).

Рис. 6. Диспетчер имен

Рис. 6. Диспетчер имен

Дополнение от 23 сентября 2016 г.

Еще один способ создания указателя использует макрофункцию в именованной формуле (подробнее см. Функция Получить.Ячейку). [2] Откройте книгу, в которой много рабочих листов и/или листов с диаграммами, и выполните следующее:

  1. Вставьте новый лист, на котором будет находиться список (назовите его, например, Указатель).
  2. Выполните команду Формулы –> Присвоить имя, чтобы открыть диалоговое окно Создание имени.
  3. Впишите в поле Имя название Список.
  4. Введите следующую формулу в поле Диапазон (рис. 7): =ЗАМЕНИТЬ(ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1);1;НАЙТИ(«]»;ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1));»»)
  5. Нажмите ОК, чтобы закрыть диалоговое окно Создание имени.

%d1%80%d0%b8%d1%81-7-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b8%d0%bc%d0%b5%d0%bd%d0%b8-%d0%b4%d0%bb%d1%8f-%d0%b8%d0%bc%d0%b5%d0%bd%d0%be%d0%b2%d0%b0%d0%bd%d0%bd%d0%be%d0%b9-%d1%84

Рис. 7. Создание имени для именованной формулы

Обратите внимание: в формуле используется функция ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ, которая не относится к числу стандартных функций рабочего листа. Это макрофункция, написанная в сравнительно старом XLM-стиле и предназначенная для применения на специальном листе макросов. При использовании аргумента 1 она возвращает массив имен листов, причем перед именем каждого листа указано название книги, откуда он взят. Функции ЗАМЕНИТЬ и НАЙТИ удаляют имя книги, сопутствующее названию листа.

Чтобы сгенерировать имена листов, введите в ячейку А1 следующую формулу, а затем скопируйте ее ниже по столбцу: =ИНДЕКС(Слисок;СТРОКА()). На рис. 8 приведена данная формула для диапазона А1:А24. В книге 21 лист, поэтому формула возвращает ошибку #ССЫЛКА! при попытке отобразить имя несуществующего листа. Чтобы избежать этого, измените формулу следующим образом: =ЕСЛИОШИБКА(ИНДЕКС(Список;СТРОКА()));»»)

%d1%80%d0%b8%d1%81-8-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d1%84%d0%be%d1%80%d0%bc%d1%83%d0%bb%d1%8b-%d0%b4%d0%bb%d1%8f-%d0%be%d1%82%d0%be%d0%b1%d1%80%d0%b0

Рис. 8. Использование формулы для отображения списка имен листов

Список названий листов можно откорректировать, если вы переименовываете, добавляете или удаляете листы, но это не происходит автоматически. Чтобы принудительно обновить формулы, нажмите Ctrl+Alt+F9. Если вы хотите, чтобы имена листов обновлялись автоматически, измените формулу, чтобы сделать ее меняющейся: =ЗАМЕНИТЬ(ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1);1;НАЙТИ(«]»; ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1));»»)&Т(ТДАТА()). Функия Т проверяет, является ли значение текстовым, и возвращает сам текст, если да, либо две кавычки «» (пустой текст), если нет.

Зачем может понадобиться список названий листов? На рис. 9 показано оглавление, созданное как указано выше, а таже ссылки на ячейку А1 соответствующего листа. Например, в ячейке В2 записана формула =ГИПЕРССЫЛКА(«#»&A2&»!A1″;»Перейти по ссылке»). Щелкнув на гиперссылке, вы активизируете лист и выделяете ячейку А1. К сожалению, Excel не поддерживает гиперссылки, ведущие на лист с диаграммами, поэтому при попытке сослаться на такой лист программа выдаст ошибку.

Если вы пользуетесь такими приемами, то книгу нужно сохранить как файл с поддержкой макросов (в формате *.xlsm).

%d1%80%d0%b8%d1%81-9-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d0%b5-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0-%d0%b3%d0%b8%d0%bf%d0%b5%d1%80%d1%81%d1%81%d1%8b%d0%bb%d0%be%d0%ba

Рис. 9. Создание списка гиперссылок


[1] По материалам книги Р.Холи, Д.Холи. Excel. Трюки, стр. 38–40

[2] По материалам книги Джон Уокенбах. Excel 2013. Трюки и советы. – СПб.: Питер, 2014. – С. 46–48.

 

Kaban

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

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

Имеются листы с именами с Лист1 по Лист46 и есть условие некое.
Нужно перебрать листы, и если условие выполняется то внести в каждый изменения.
Допустим нахожу я имя листа. А Как назначить его активным для внесения изменений именно в него, а то у меня все в первый лист забивает?

Изменено: Kaban04.07.2013 19:16:19

 

Hugo

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

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

#2

04.07.2013 17:26:24

Чтоб внести изменения — совершенно не нужно назначать лист активным.

Код
Sub tt()
    Dim sh As Worksheet
    For Each sh In Worksheets
        If sh.[a1] = Empty Then sh.[a1] = 1
    Next
End Sub

И вообще, зачем имя?
Или проверять на условие нужно не все листы, а один или несколько определённых? Тогда цикл по массиву имён, проверяем конкретный лист по имени из массива.

Изменено: Hugo04.07.2013 17:35:53

 

Kaban

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

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

Да я вообще из 1с-ки к Excel обращаюсь. Это всё и усложняет. Имя листа для меня это уникальный идентификатор в данном случаем.
Есть таблица значений, в одной из колонок в ней имеются номера. Так вот когда номер в колонке совпадает с номером листа в этот лист надо внести изменения. Я сделал перебор строк + перебор листов, но забиваются данные в первый лист. Поэтому нашел я этот форум и сюда пишу… Поэтому и решил что нужно сделать лист активным или выбрать или текущим назначить, не знаю даже  :(  
Пробовал Лист выбирать с Activate и Select: не хочет принимать

Изменено: Kaban05.07.2013 09:34:50

 

Hugo

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

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

«забиваются данные в первый лист» потому, что Вы код написали неправильно.
Ещё раз — нет никакой нужды активировать листы. Нужно просто изменить код.
Как пример см. выше — данные заносятся во все листы без всяких активаций.
Ну а как там конкретно в 1С — я не знаю, не работал. Но думаю, что если vbs может корректоно обращаться с листами — то сможет и 1С.

Да и перебор листов по описанию не нужен.

 

Kaban

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

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

#5

05.07.2013 10:23:14

Цитата
Hugo пишет:

Да и перебор листов по описанию не нужен.

Вот этим ответом Вы меня совсем запутали. Как тогда обратиться к листу?
Пример, в таблице в колонке идут номера 3, 13, 22, 5
Мне надо найти листы с такими именами (3, 13, 22, 5) и забить в них данные из строки, с соответствующим номером. Я пишу так:
Получаю строку таблицы ТЗ
далее

Для НомерЛиста = 1 По КоличествоЛистов Цикл
ИмяЛиста = КнигаАЗК.WorkSheets(НомерЛиста).Name;
ну и
Если ТЗ.Номер = ИмяЛиста Тогда
ЛистАЗК = КнигаАЗК.Worksheets(ИмяЛиста).Select;
ЛистАЗК.Cells(НомерСтроки, «C»).Value = ТЗ.Товар;
и так далее что-то забиваем…..
и все данные попадают в первый лист, а должны в 3, 13, 22 и 5

Какие еще варианты могут быть? Что не так по Вашему мнению?

Изменено: Kaban05.07.2013 10:25:34

 

Johny

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

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

#6

05.07.2013 10:26:49

Цитата
Kaban пишет:
А Как назначить его активным

когда номер в колонке совпадает с номером листа

Уважаемый Kaban! Надо изначально писать, что у вас имеется некий список «номеров» листов и что надо оттуда взять этот номер. Только вот поясните, что значит «номер листа»? Индекс листа? Имя листа?

There is no knowledge that is not power

 

Hugo

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

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

#7

05.07.2013 10:27:26

«Мне надо найти листы с такими именами (3, 13, 22, 5)» — так зачем искать?
Обращайтесь напрямую к sheets(«3»)  , sheets(«13»)  , sheets(«22»)  , sheets(«5»)  , никаких переборов.
Если возможно, что такого листа может не быть — тогда нужно обработать ошибку. Ну это уже по задаче, это другой вопрос.

Код
sheets("13").range("A1")="test"

Изменено: Hugo05.07.2013 10:29:21

 

Kaban

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

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

#8

05.07.2013 10:39:06

Цитата
Johny пишет:
Уважаемый Kaban! Надо изначально писать, что у вас имеется некий список «номеров» листов и что надо оттуда взять этот номер. Только вот поясните, что значит «номер листа»? Индекс листа? Имя листа?

Из 1с-ки обращаюсь к Excel впервые, что накопал в инете так и написал. Синтаксис возможно не тот, я не знаю.
А номерЛиста это числовая переменная для обращения к Номеру листа Excel чтобы получить дальше его имя.

Цитата
Hugo пишет:
Обращайтесь напрямую к sheets(«3»), sheets(«13»), sheets(«22»), sheets(«5»), никаких переборов.

А пройдет так: sheets(НомерЛиста) ??
+использовать range(«A1») наверно не могу, т.к. не знаю количество строк. Или можно написать range(«A1:G65000») ??

 

Kaban

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

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

Ребят, а можно «для тех кто в танке» написать код?
Есть таблица:

Номер Знач1 Знач2 Знач3
5 142 173 292
44 567 345 789

Мне нужно найти лист с номером как в колонке «Номер» таблицы значений (он может быть любой). (Лист с именем точно существует)
И в этот лист внести изменения поячеично, т.е
ЛистАЗК.Cells(1, «B»   ;)  .Value = ТЗ.Знач1;
ЛистАЗК.Cells(1, «С»   ;)  .Value = ТЗ.Знач2;
ЛистАЗК.Cells(1, «D»   ;)  .Value = ТЗ.Знач3;

У нас жара +30, я туплю похоже или не то спрашиваю. Извините

Изменено: Kaban05.07.2013 10:46:28

 

Hugo

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

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

#10

05.07.2013 10:44:38

Можно и так

Код
sheets(НомерЛиста)

если НомерЛиста=3 или другое число.
Про количество строк — это уже другой вопрос, зависящий от кучи разных обстоятельств…

Только в общем случае нужно писать

Код
worksheets(3)

т.к. если будут другие, не рабочие листы — столкнётесь с ошибкой работы.

Изменено: Hugo05.07.2013 10:46:57

 

Hugo

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

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

#11

05.07.2013 11:00:21

Ну так вся проблема в том, как перебрать эту Вашу таблицу — это уже Ваша 1С сторона.
Далее в экселе просто:

Код
worksheets(n).Cells(1, "B").Value = Знач1
worksheets(n).Cells(1, "C").Value = Знач2
worksheets(n).Cells(1, "D").Value = Знач3
 

Kaban

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

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

#12

05.07.2013 11:04:19

Цитата
Hugo пишет:
Только в общем случае нужно писать

Код
 worksheets(3) 

т.к. если будут другие, не рабочие листы — столкнётесь с ошибкой работы.

В итоге должно быть так?
ЛистАЗК = КнигаАЗК.Worksheets(ИмяЛиста)

 

Hugo

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

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

#13

05.07.2013 11:10:17

Что за ЛистАЗК и КнигаАЗК?
Но вполне возможна такая строка кода:

Код
set ЛистАЗК = КнигаАЗК.Worksheets(ИмяЛиста)

Код
Sub tt()

    Dim КнигаАЗК As Workbook, ЛистАЗК As Worksheet, ИмяЛиста As Long

    ИмяЛиста = 2
    Set КнигаАЗК = ThisWorkbook
    Set ЛистАЗК = КнигаАЗК.Worksheets(ИмяЛиста)

    ЛистАЗК.Range("A1").Value = "test"
    MsgBox ЛистАЗК.Range("A1")

End Sub

Изменено: Hugo05.07.2013 11:13:58

 

Kaban

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

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

#14

05.07.2013 11:15:52

Цитата
Hugo пишет:
Что за ЛистАЗК и КнигаАЗК?
Но вполне возможна такая строка кода:

Код
 set ЛистАЗК = КнигаАЗК.Worksheets(ИмяЛиста) 

Код
 Sub tt()

    Dim КнигаАЗК As Workbook, ЛистАЗК As Worksheet, ИмяЛиста As Long

    ИмяЛиста = 2
    Set КнигаАЗК = ThisWorkbook
    Set ЛистАЗК = КнигаАЗК.Worksheets(ИмяЛиста)

    ЛистАЗК.Range("A1").Value = "test"
    MsgBox ЛистАЗК.Range("A1")

End Sub
 

Спасибо, думаю это то,  что надо. Буду копать теперь как перенести это на язык 1с.

 

Johny

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

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

Только учтите, что Sheets(3) и Sheets(«3») — это разные вещи.

There is no knowledge that is not power

 

Kaban

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

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

#16

05.07.2013 11:43:08

Цитата
Johny пишет:
Только учтите, что Sheets(3) и Sheets(«3») — это разные вещи.

да :)  я уже догадался и исправил.

Функция ЛИСТ в 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.

Хитрости »

23 Август 2013              133862 просмотров


ВПР с поиском по нескольким листам

Скачать файл с исходными данными, используемый в видеоуроке:

  ВПР по всем листам (43,0 KiB, 24 297 скачиваний)


Если необходимо найти какое-либо значение в большой таблице очень часто применяется функция ВПР. Но ВПР работает только с одной таблицей и нет никакой возможности средствами самой функции просмотреть искомое значение на нескольких листах. Если поиск необходимо осуществить только по двум листам, то можно схитрить:
=ВПР(A2;ЕСЛИ(ЕНД(ВПР(A2;Лист2!A1:B10;2;0));Лист3!A1:B10;Лист2!A1:B10);2;0)
начиная с версии Excel 2007 можно так же использовать функцию ЕСЛИОШИБКА(IFERROR):
=ЕСЛИОШИБКА(ВПР(A2;Лист2!A1:B10;2;0);ВПР(A2;Лист3!A1:B10;2;0)
подробнее преимущества функции ЕСЛИОШИБКА(IFERROR) разбирались в этой статье: Как в ячейке с формулой вместо ошибки показать 0

А когда листов больше? Можно плодить ЕСЛИ(IF) и ЕСЛИОШИБКА(IFERROR). Но это во-первых совсем не наглядно и во-вторых очень непрактично, т.к. при добавлении или удалении листов придется править всю мега-формулу. Да и при работе с количеством листов более 10 есть большой шанс, что длина формулы выйдет за пределы допустимой.

Есть небольшой прием, который поможет искать значение в указанных листах. Для начала необходимо создать на листе список листов книги, в которых искать значение. В приложенном к статье примере они записаны в диапазоне $E$2:$E$5.
=ВПР(A2;ДВССЫЛ(«‘»&ИНДЕКС($E$2:$E$5;ПОИСКПОЗ(ИСТИНА;СЧЁТЕСЛИ(ДВССЫЛ(«‘»&$E$2:$E$5&»‘!A1:A50″);A2)>0;0))&»‘!A:B»);2;0)

Формула вводится в ячейку как формула массива — т.е. сочетанием клавиш Ctrl+Shift+Enter. Это очень важное условие. Если формулу не вводить в ячейку как формулу массива, то необходимого результата не получить.
Попробую кратенько описать принцип работы данной формулы.

Перед чтением дальше советую скачать пример:

  ВПР по всем листам (43,0 KiB, 24 297 скачиваний)

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

СЧЁТЕСЛИ(ДВССЫЛ(«‘»&$E$2:$E$5&»‘!A1:A50»);A2)

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

СЧЁТЕСЛИ({1;0;0;0};A2)

. Поэтому следующий блок

ПОИСКПОЗ(ИСТИНА;СЧЁТЕСЛИ(ДВССЫЛ(«‘»&$E$2:$E$5&»‘!A1:A50»);A2)>;0;0)

работает именно с этим:

ПОИСКПОЗ(ИСТИНА;СЧЁТЕСЛИ({1;0;0;0};A2)>0;0)

Читать подробнее про СЧЁТЕСЛИ

в результате чего мы получаем позицию имени листа в массиве имен листов $E$2:$E$5, с помощью ИНДЕКС получаем имя листа и подставляем это имя уже к ДВССЫЛ(INDIRECT), а она в ВПР:
=ВПР(A2;ДВССЫЛ(«‘»&ИНДЕКС({«Астраханьоблгаз»:»Липецкоблгаз»:»Оренбургоблгаз»:»Ростовоблгаз»};1)&»‘!A:B»);2;0) =>
=ВПР(A2;ДВССЫЛ(«‘Астраханьоблгаз’!A:B»);2;0) =>
=ВПР(A2;’Лист2′!A:B;2;0)

Что нам и требовалось. Теперь если в книгу будут добавлены еще листы, то необходимо будет всего лишь дописать их к диапазону $E$2:$E$5 и при необходимости этот диапазон расширить. Так же можно задать диапазон $E$2:$E$5 как динамический и тогда необходимость в правке формулы отпадет вовсе.

Используемые в формуле величины:
A2 — ссылка на ячейку с искомым значением. Т.е. указывается то значение, которое требуется найти на листах.

$E$2:$E$5 — диапазон с именами листов, в которых требуется осуществлять поиск указанного значения (A2).

Диапазон «‘!A1:A50» — это диапазон, в котором СЧЁТЕСЛИ ищет совпадения. Поэтому указывается только один столбец данных. При необходимости следует расширить или изменить. Можно указать так же «‘!A:A», но при этом следует учитывать, что указание целого столбца может привести к значительному увеличению времени выполнения функции. Поэтому имеет смысл просто задать диапазон с запасом, например «‘!A1:A10000».

«‘!A:B» — диапазон для аргумента ВПР — Таблица. В первом столбце этого диапазона на каждом из указанных листов ищется указанное значение (A2). При нахождении возвращается значение из указанного столбца. Читать подробнее про ВПР>>

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

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

  ВПР по всем листам (43,0 KiB, 24 297 скачиваний)

Так же можно искать по нескольким листам разных книг, а не только по нескольким листам одной книги. Для этого необходимо будет в списке листов вместе с именами листов добавить имена книг в квадратных скобках:[Книга1.xlsb]Май
[Книга1.xlsb]Июнь
[Книга2.xlsb]Май
[Книга2.xlsb]Июнь
Перечисленные книги обязательно должны быть открыты

ВАЖНО! если в результате записи формулы получаете ошибку #ССЫЛКА!(#REF!), то скорее всего файл, из которого получаете данные, сохранен в формате xlsx(xlsm и т.п.), который содержит более 1млн. строк. А файл с формулой в раннем формате xls. Чтобы ошибки не было сохраните файл с формулой тоже в новом формате(Сохранить как — Книга Excel (.xlsx)), закройте и откройте заново. Формула должна заработать, если записана правильно.
Либо укажите фиксированный диапазон для ВПР, с количеством строк не более 65536. Вместо «‘!A:B» должно получиться так: «‘!A1:B60000»


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

Function VLookUpAllSheets(vCriteria As Variant, rTable As Range, lColNum As Long, Optional iPart As Integer = 1) As Variant
    Dim rFndRng As Range
    If iPart <> 1 Then iPart = 2
    For i = 1 To Worksheets.Count
        If Sheets(i).Name <> Application.Caller.Parent.Name Then
            With Sheets(i)
                Set rFndRng = .Range(rTable.Address).Resize(, 1).Find(vCriteria, , xlValues, iPart)
                If Not rFndRng Is Nothing Then
                    VLookUpAllSheets = rFndRng.Offset(, lColNum - 1).Value
                    Exit For
                End If
            End With
        End If
    Next i
End Function

Функция попроще, чем ВПР — последний аргумент(интервальный_просмотр) выполняет несколько иные, чем в ВПР функции. Хотя полагаю немногие его используют в классическом варианте.
rTable — указывается таблица для поиска значений(как в стандартной ВПР)
vCriteria — указывается ссылка на ячейку или текстовое значение для поиска
lColNum — указывается номер столбца в таблице rTable, значение из которого необходимо вернуть — может быть ссылкой на столбец — СТОЛБЕЦ().
iPart — указывается метод просмотра. Если не указан, либо указана цифра 1, то поиск осуществляется по полному совпадению с ячейкой. Но в таком варианте допускается применение подстановочных символов * и ?. Если указано значение, отличное от 1, то совпадение будет отбираться по части вхождения. Если в vCriteria указать «при», то совпадением будет считаться и слово «прибыль»(первый буквы совпадают) и «неприятный»(в середине встречается «при»). Но в этом случае знаки * и ? будут восприниматься «как есть». Может пригодиться, если в искомом тексте присутствуют символы звездочки и вопросительного знака и надо найти совпадения, учитывая эти символы.

Так же см.:
Что такое формула массива
Как найти значение в другой таблице или сила ВПР
Как подсчитать количество повторений
Динамические именованные диапазоны


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

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


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



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

У каждого листа есть название. В одной книге 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

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

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

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

Я
   misha122062

13.01.10 — 12:34

Есть список листов и есть файл Excel, нам надо проверить есть ли указанные листы в файле.

Как найти в Excel’е листы по имени.

Подскажите, кто знает.

Я пока знаю как все листы перебрать, но мне это не нравиться.

Типа:

Для к=1 по НашФайл.Sheets.Count() цикл                         //

ТекущийЛистИмя=НашФайл.Sheets.Item(к).Name();

КонецЦикла;

   Rie

1 — 13.01.10 — 12:37

(0) Индексом у листа в коллекции может быть не только номер, но и имя листа.

   misha122062

2 — 13.01.10 — 12:44

понял

   dk

3 — 13.01.10 — 12:48

НашФайл.Sheets(1).Name

НашФайл.Sheets(«Sheet1»).Name

   DrZombi

4 — 13.01.10 — 12:49

(3)Еще вопрос: А как получить список листов ;) ?

   AndrewKiev

5 — 13.01.10 — 12:52

Эксель = ПолучитьCOMОбъект(Файл);

       //получим список Листов и добавим их в табчасть «Доступные листы»
   СписокЛистов = Эксель.Sheets;

       Для каждого Лист Из СписокЛистов Цикл
       НоваяСтрока = ДоступныеЛисты.Добавить();

               НоваяСтрока.Лист                = Лист.Name;
       НоваяСтрока.НомерЛистаВЭксель    = Лист.Index;
   КонецЦикла;

   AndrewKiev

6 — 13.01.10 — 12:57

оно?

   dk

7 — 13.01.10 — 13:10

Для Сч = 1 По НашФайл.Sheets.Count Цикл

 Сообщить(НашФайл.Sheets(Сч).Name);

КонецЦикла

   DrZombi

8 — 13.01.10 — 13:13

(7)Я почему-то решил, что сего объекта нет в екселе :( «НашФайл.Sheets.Count»
сенкс

   DrZombi

9 — 13.01.10 — 13:13

(5)Через ком тоже неплохо :)… Но пока он для меня, что-то далекое и пугающее :)

  

DrZombi

10 — 13.01.10 — 13:14

… ну все… пора домой… ужо только на черный текст обращаю внимание :(

Основная теорема систематики: Новые системы плодят новые проблемы.

Имя листа в ячейке формулой в Excel

Разберем несколько вариантов добавления имени листа в ячейку в Excel с помощью формул.

Формула имени листа в Excel

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

=ПСТР(ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 );ПОИСК(«]»;ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 ))+1;255)

Давайте по шагам разберем принцип действия формулы имени листа.

Шаг 1. Функция ЯЧЕЙКА

Функция ЯЧЕЙКА позволяет получить данные о содержимом ссылки, в том числе и имя файла.
В данном случае формула ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 ) позволяет получить полный путь файла Excel на локальном диске:


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

Шаг 2. Функция ПОИСК

Таким образом для извлечения имени листа необходимо найти символ закрывающейся квадратной скобки (]) с помощью функции ПОИСК, которая возвращает позицию первого вхождения искомого элемента:


Прибавляя к результату 1, мы получаем позицию с которой начинается имя листа.

Шаг 3. Функция ПСТР

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


Так как точное количество символов в имени листа неизвестно, то в качестве последнего аргумента функции ПСТР указываем заведомо большее число, чем длина имени листа (подойдет любое число больше 31 — максимальная длина названия листа).

Альтернативная формула

Чтобы вставить название листа в ячейку можно воспользоваться альтернативной формулой:

=ПРАВСИМВ(ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 );ДЛСТР(ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 ))-ПОИСК(«]»;ЯЧЕЙКА(«ИМЯФАЙЛА»; A1 )))

Отличие от предыдущего варианта заключается в использовании функции ПРАВСИМВ, которая возвращает указанное количество знаков с конца текста.

Описание используемых функций

Функция ЯЧЕЙКА:

ЯЧЕЙКА(тип_сведений; [ссылка])
Возвращает сведения о форматировании, адресе или содержимом первой ячейки ссылки.

  • Тип сведений(обязательный аргумент) — текстовое значение, задающее тип сведений о ячейке (например, адрес, столбец, цвет, имяфайла, формат, скобки и т.д.);
  • Ссылка(необязательный аргумент) — ячейка, по которой возвращаются данные.

Функция ПОИСК:

ПОИСК(искомый_текст; просматриваемый_текст; [начальная_позиция])
Возвращает позицию первого вхождения знака или строки текста (при чтении слева направо, прописные и строчные буквы не различаются).

  • Искомый текст(обязательный аргумент) — искомый текст
  • Просматриваемый текст(обязательный аргумент) — текст, по которому производится поиск;
  • Начальная позиция(необязательный аргумент) — номер знака в просматриваемом тексте, с которого следует начать поиск.

Функция ПСТР:

ПСТР(текст; начальная_позиция; число_знаков)
Возвращает заданное число знаков из строки текста, начиная с указанной позиции.

  • Текст(обязательный аргумент) — текст, из которого извлекают символы;
  • Начальная позиция(обязательный аргумент) — позиция первого знака, извлекаемого из текста;
  • Число знаков(обязательный аргумент) — количество знаков, возвращаемых функцией.

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

Функция ЛИСТ в 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.

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

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

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

‘————————————————————————————— ‘ 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») ), то функция вернет полный путь с именем того листа, который активен в данный момент(даже если это лист другой книги).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Имена в формулах

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

Пример без имени

Пример с именем

Дополнительно об использовании имен

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

Определенное имя. Имя, используемое для представления ячейки, диапазона ячеек, формулы или константы. Вы можете создавать собственные определенные имена. Иногда (например, при настройке области печати) Excel самостоятельно создает определенное имя.

Имя таблицы. Имя таблицы Excel, являющейся набором данных по отдельной теме, которые хранятся в записях (строках) и полях (столбцах). Excel создает стандартные имена («Таблица1», «Таблица2» и т. д.) каждый раз при вставке таблицы, но их можно изменить, чтобы сделать их более понятными. Дополнительные сведения о таблицах Excel см. в статье Использование структурированных ссылок в таблицах Excel.

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

Если определено имя «Бюджет_ФГ08», а его область действия — «Лист1», то это имя без уточнения распознается только на листе «Лист1», но не на листе «Лист2» или «Лист3».

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

Если вы определили имя, например «Продажи_Отдела_Сбыта», а его область действия — книга, то это имя распознается на всех листах этой книги, но не в какой-либо другой книге.

Имя должно быть уникальным в пределах своей области. В Excel запрещено определять имя, которое уже существует в той или иной области. При этом можно использовать одинаковые имена в разных областях. Например, можно определить имя «ВаловойДоход» в областях «Лист1», «Лист2» и «Лист3» в одной и той же книге. Несмотря на одинаковость, каждое имя уникально в своей области. Так можно сделать, чтобы формула, использующая имя «ВаловойДоход», всегда ссылалась на одни и те же ячейки на локальном уровне листа.

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

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

Имена можно создавать, используя способы, указанные ниже.

Поле определенных имен в строке формул. Это поле лучше всего использовать для создания имени на уровне книги для выделенного диапазона.

Создание имени по выделению. Удобно создавать имена из существующих имен строк и столбцов с помощью выделения ячеек на листе.

Диалоговое окно Создание имени Это лучше всего использовать, если нужна большая гибкость при создании имен, например, задание области определения на локальном уровне листа или создание примечания к имени.

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

Можно ввести имя таким образом.

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

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

Выбором из команды Использовать в формуле Выберите определенное имя на вкладке Формулы в группе Определенные имена из списка Использовать в формуле.

Кроме того, можно создать список всех доступных имен книги. Он будет состоять из двух столбцов: в первом имена, а во втором их краткие описания. Укажите ячейку, с которой будет начинаться список. На вкладке Формулы в группе Определенные имена нажмите кнопку Использовать в формуле, щелкните Вставить имена, а затем в диалоговом окне Вставка имен выберите Все имена.

Ниже приведен список синтаксических правил для создания и редактирования имен.

Допустимые символы Первым символом имени должна быть буква, знак подчеркивания (_) или обратная косая черта (). Остальные символы имени могут быть буквами, цифрами, точками и знаками подчеркивания.

Совет. В качестве определенного имени нельзя использовать буквы «C», «c», «R» и «r», так как они используются в качестве сокращенного имени строки и столбца выбранной в данный момент ячейки при их вводе в поле Имя или Перейти.

Имена в виде ссылок на ячейки запрещены Имена не могут быть такими же, как ссылки на ячейки, например Z$100 или R1C1.

Пробелы не допускаются Пробелы не допускаются. В качестве разделителей слов используйте символ подчеркивания (_) и точку (.), например «Налог_с_Продаж» или «Первый.Квартал».

Длина имени Имя может содержать до 255 символов.

Учет регистра. Имя может состоять из строчных и прописных букв. Excel не различает строчные и прописные буквы в именах. Например, если создать имя «Продажи», а затем попытаться добавить имя «ПРОДАЖИ» в той же книге, Excel предложит выбрать уникальное имя.

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

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

Щелкните поле Имя у левого края строки формул.

Введите имя, которое нужно использовать для ссылки. В имени может быть до 255 знаков.

Нажмите клавишу ВВОД.

Примечание: При изменении содержимого ячейки ей нельзя присвоить имя.

Можно преобразовать в имена существующие заголовки строк и столбцов.

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

На вкладке Формулы в группе Определенные имена выберите команду Создать из выделенного фрагмента.

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

На вкладке Формулы в группе Определенные имена выберите пункт Присвоение имени.

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

Примечание. Длина имени не может превышать 255 знаков.

Для задания области действия имени в поле со списком Область выберите элемент Книга или имя листа в книге.

Также в поле Примечание можно ввести описание длиной до 255 знаков.

В поле Диапазон выполните одно из указанных ниже действий.

Чтобы указать ссылку на ячейки, введите ссылку на ячейки.

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

Чтобы указать константу, введите = (знак равенства), а затем значение константы.

Чтобы указать формулу, введите =, а затем формулу.

Чтобы закончить и вернуться на лист, нажмите кнопку ОК.

Совет: Чтобы расширить или удлинить диалоговое окно Создание имени, щелкните и перетащите маркер захвата, расположенный внизу.

Управление именами с помощью диалогового окна диспетчера имен

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

Чтобы открыть диалоговое окно Диспетчер имен, на вкладке Формулы в группе Определенные имена нажмите кнопку Диспетчер имен.

В диалоговом окне Диспетчер имен отображаются следующие сведения о каждом имени в списке.

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Еще…Меньше

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

Вставка текущего имени файла, его полного пути и имени активного листа

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

=ЯЧЕЙКА(«filename»)

Вставка текущего имени файла и имени активного листа

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

=ПРАВСИМВ(ЯЧЕЙКА(«filename»);ДЛСТР(ЯЧЕЙКА(«filename»))- МАКС(ЕСЛИ(НЕ(ЕОШ(ПОИСК(«»;ЯЧЕЙКА(«filename»); СТРОКА(1:255))));ПОИСК(«»;ЯЧЕЙКА(«filename»);СТРОКА(1:255)))))

Примечания: 

  • Чтобы ввести формулу в виде формулы массива, нажмите клавиши CTRL+SHIFT+ВВОД.

  • Формула возвращает имя листа, если он был сохранен хотя бы один раз. Если вы используете эту формулу на несохраненном листе, ячейка формулы останется пустой, пока вы не сохраните лист.

Вставка только текущего имени файла

Введите или вставьте следующую формулу, чтобы вставить имя текущего файла в ячейку.

=ПСТР(ЯЧЕЙКА(«filename»);ПОИСК(«[«;ЯЧЕЙКА(«filename»))+1; ПОИСК(«]»;ЯЧЕЙКА(«filename»))-ПОИСК(«[«;ЯЧЕЙКА(«filename»))-1)

Примечание: Если вы используете эту формулу на несохраненном листе, вы увидите сообщение об ошибке #ЗНАЧ! в ячейке. После сохранения листа ошибка заменяется именем файла.

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

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

Нужна дополнительная помощь?

Like this post? Please share to your friends:
  • Excel поиск латинских букв
  • Excel поиск пустых ячеек в диапазоне
  • Excel поиск пустой ячейки в таблице
  • Excel поиск пробела справа
  • Excel поиск примерного значения