Имя Листа Из Ячейки |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Хитрости »
4 Март 2015 53387 просмотров
Как получить имя листа формулой
Задача: записать в отдельной ячейке или внутри формулы имя текущего листа(т.е. того, в котором сама функция).
В принципе это очень легко сделать простейшей функцией пользователя:
'--------------------------------------------------------------------------------------- ' Procedure : GetShName ' DateTime : 04.03.2015 10:44 ' Author : The_Prist(Щербаков Дмитрий) ' http://www.excel-vba.ru ' Purpose : Функция возвращает в ячейку имя листа ' rCell - Необязательный аргумент. ' Если указан - функция вернет имя листа, на котором расположена эта ячейка ' Если не указан - функция вернет имя листа, в котором записана функция '--------------------------------------------------------------------------------------- Function GetShName(Optional rCell As Range) If Not rCell Is Nothing Then GetShName = rCell.Parent.Name Else GetShName = Application.Caller.Parent.Name End If End Function
Синтаксис:
получение имени листа, в котором записана функция:
=GetShName()
получение имени листа, в котором расположена указанная ячейка
=GetShName(A1) — данная запись равнозначна записи без ячейки, т.к. ячейка все равно в пределах листа с самой функцией
=GetShName(Лист2!A1)
Но бывают случаи, когда использование макросов весьма нежелательно. Тогда можно воспользоваться чуть более громоздкой и менее понятной формулой:
=ПСТР(ЯЧЕЙКА(«filename»;A2);ПОИСК(«]»;ЯЧЕЙКА(«filename»;A2))+1;31)
=MID(CELL(«filename»,A2),SEARCH(«]»,CELL(«filename»,A2))+1,31)
Однако эта формула вернет точно такой же результат, как функция пользователя выше и макросы совершенно не нужны.
Теперь разберем эту формулу поподробнее
Самая основная часть — ЯЧЕЙКА(«filename»;A2). Функция ЯЧЕЙКА (CELL) с записанным первым аргументом «filename» возвращает полный путь к книге, включая имя листа и адрес ячейки, в которой записана функция:
C:UsersДмитрийDesktop[Tips_All_GetShName.xls]Лист1
Т.к. нам нужно только имя листа — мы применяем ПСТР (MID), которая возвращает часть текста, начиная с указанной позиции символа. ПОИСК (SEARCH) ищет нам именно эту позицию — позицию символа «]».
Если по шагам просмотреть этапы работы формулы, то будет нечто вроде:
=ПСТР(ЯЧЕЙКА(«filename»;A2);ПОИСК(«]»;ЯЧЕЙКА(«filename»;A2))+1;31)
Шаг1 =>
=ПСТР(ЯЧЕЙКА(«filename»;A2);ПОИСК(«]»;C:UsersДмитрийDesktop[Tips_All_GetShName.xls]Лист1)+1;31)
Шаг2 =>
=ПСТР(ЯЧЕЙКА(«filename»;A2);49+1;31)
Шаг3 =>
=ПСТР(C:UsersДмитрийDesktop[Tips_All_GetShName.xls]Лист1;50;31)
Шаг4 =>
=Лист1
Первый момент: почему применяю цифру 31 последним аргументом ПСТР? По факту, там необходимо указывать точное количество символов, но если указать больше — то будут взяты все символы от указанного и до последнего. Т.е можно было бы указать и 99, но 31 — это максимальное количество символов, которое можно использовать в имени листа.
Второй момент: первым аргументом функции ЯЧЕЙКА указывается текст, обозначающий тип сведений. В русской локализации он доступен на русском — «имяфайла». Однако при открытии файла с этой функцией в другой локализации тип сведений не будет переведен и функция не сможет работать. Поэтому я указываю на английском, т.к. он является универсальным в данном случае и будет работать в любой локализации. Однако нет никакой ошибки, если указать на русском: ЯЧЕЙКА(«имяфайла»;A2)
Если вторым аргументом функции ЯЧЕЙКА ничего не указывать(=ЯЧЕЙКА(«filename»)), то функция вернет полный путь с именем того листа, который активен в данный момент(даже если это лист другой книги). Это всегда надо учитывать. Часто функцию используют для определения имени книги, в которой сама функция записана(например, для запросов Power Query — Относительный путь к данным PowerQuery). И в какой-то момент может получиться так, что ожидаете увидеть имя книги или листа с функцией, а получаете совсем другое.
Правда, у этой формулы есть свои недостатки: обязательно необходимо, чтобы книга была сохранена на диске. Это означает, что формула не сработает для книги, которая была только что создана и не сохранена. Связано это с ограничениями возможностей параметра «filename» функции ЯЧЕЙКА(CELL). Она не может получить путь к файлу, который еще не сохранен.
Функция пользователя(UDF) GetShName(приведенная в самом начале статьи) лишена этого недостатка.
Для чего вообще может быть нужно записывать имя листа в ячейку? Ну, например, если имя листа периодически меняется, а в своих формулах вы используете функции вроде ДВССЫЛ со ссылкой на этот лист. Либо для создания более наглядного оглавления через гиперссылки.
Кто-то уже явно догадался, что подобным же образом можно получить не только имя листа — но и имя книги:
=ПСТР(ЯЧЕЙКА(«filename»);ПОИСК(«[«;ЯЧЕЙКА(«filename»))+1;ПОИСК(«]»;ЯЧЕЙКА(«filename»))-ПОИСК(«[«;ЯЧЕЙКА(«filename»))-1)
так же как и для имени листа — можно указать ячейку из другой книги и тогда формула вернет имя той книги, из которой указана ячейка.
Если ячейка не указана — функция вернет имя активной в данный момент книги.
Так же можно получить полный путь к книге и имя книги(без квадратных скобок и имени листа):
=ПОДСТАВИТЬ(ПСТР(ЯЧЕЙКА(«filename»;A1);1;ПОИСК(«]»;ЯЧЕЙКА(«filename»;A1))-1);»[«;»»)
Так же см.:
Имя предыдущего листа
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Есть ли простой способ вставить имя текущего листа в одну ячейку? Как вставить имя всех листов в ячейки? В этой статье вы найдете хитрые методы решения этих проблем.
Быстро вставить имя текущего листа в ячейку с функциями
Быстро вставляйте все имена листов в ячейки с помощью VBA
Быстро вставьте имя активного листа с помощью Kutools for Excel
Быстро вставляйте все имена листов с гиперссылками в ячейки в виде индекса
Быстро вставить имя текущего листа в ячейку с функциями
Просто введите формулу = ПРАВЫЙ (ЯЧЕЙКА («имя файла», D2), LEN (ЯЧЕЙКА («имя файла», D2)) — НАЙТИ («]», ЯЧЕЙКА («имя файла», D2))) в любую камеру и нажмите Enter key, в ячейке отображается имя текущего листа.
Эта формула может отображать только имя текущего листа, но не имя другого листа.
Быстро вставляйте все имена листов в ячейки с помощью VBA
Если вы хотите вставить все имена листов в ячейки, макрос VBA — хороший выбор.
Шаг 1: Удерживайте другой + F11 ключи в Excel, и он открывает Microsoft Visual Basic для приложений окно.
Шаг 2: нажмите Вставить > Модулии вставьте следующий макрос в окно модуля.
VBA для вставки имен всех листов в ячейки:
Sub SheetNames ()
Колонны (1) .Вставить
Для i = 1 To Sheets.Count
Cells (i, 1) = Sheets (i). Name
Затем я
End Sub
Шаг 3: нажмите F5 ключ для запуска этого макроса. Затем вы увидите, что имена всех листов будут указаны в столбце A текущего листа. Смотрите скриншот:
Внимание: В коде VBA вы можете изменить Ячейки (i, 1) к другой ссылке, чтобы вставить имена листов, начинающиеся с других ячеек. Например, вставьте имена листов, начинающиеся с C3, измените его на Ячейки (i + 2, 3).
Быстро вставьте имя активного листа с помощью Kutools for Excel
Если вы хотите вставить информацию об активном листе, включая имя листа, имя книги, путь к файлу и т. Д., В ячейку или верхний / нижний колонтитул, вы можете использовать Kutools for ExcelАвтора Вставить информацию о книге.
После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:
1. Выберите ячейку или диапазон, в который нужно поместить имя листа, и щелкните Кутулс Плюс > Workbook > Вставить информацию о книге.
2. Затем выберите информацию из книги, которую нужно вставить, из Информация раздел и укажите место, из которого вы хотите разместить информацию Вставить в раздел. Затем нажмите OK.
Вы можете щелкнуть здесь, чтобы узнать больше о вставке информации из книги.
Вставить информацию о книге в ячейку / верхний / нижний колонтитул
Быстро вставляйте все имена листов с гиперссылками в ячейки в виде индекса
Kutools for Excel‘s Создать список имен листов Утилита не только вставляет все имена листов в ячейки, но также вставляет гиперссылки на соответствующие листы.
После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:
Шаг 1: нажмите Кутулс Плюс > Рабочий лист > Создать список имен листов.
Шаг 2: в Создать список имен листов диалоговом окне, укажите настройки в соответствии с вашими потребностями и нажмите OK.
Затем вы увидите, что все имена листов вставлены в новый лист, и каждое имя листа ссылается на соответствующий лист. См. Следующие скриншоты:
Имена листов с гиперссылками
Имена листов с кнопками макроса
Наблюдения и советы этой статьи мы подготовили на основании опыта команды Создать список имен листов Утилита упрощает создание списка всех имен рабочих листов активной книги на новом листе, который содержит гиперссылки или кнопки макросов для быстрого перехода к другим листам. Щелкните, чтобы узнать больше об этой утилите.
Список всех имен листов с гиперссылками
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Модератор:Naeel Maqsudov
-
q392
- Сообщения:4
- Зарегистрирован:13 янв 2005, 06:47
Требуется в ячейке рабочего листа вывести название этого листа.
С уважением,
q392.
-
Игорь Акопян
- Сообщения:1419
- Зарегистрирован:13 окт 2004, 17:11
- Откуда:СПБ
- Контактная информация:
13 янв 2005, 13:45
открыть VBA (хм… а в русской раскладке получилось МИФ )
добавить в открытую книгу новый модуль или использовать существующий
создать функцию типа
Код: Выделить всё
Function SheetName() As String
SheetName = ActiveSheet.Name
End Function
в ячейке написать =SheetName
-
Naeel Maqsudov
- Сообщения:2551
- Зарегистрирован:20 фев 2004, 19:17
- Откуда:Moscow, Russia
- Контактная информация:
18 янв 2005, 01:33
=ПСТР(ЯЧЕЙКА(«filename»;A1);НАЙТИ(«]»;ЯЧЕЙКА(«filename»;A1))+1;65535)
Преимущества этого решения:
1. будет работать при отключенных макросах
2. автоматически пересчитывается при переименовании листа (Vba функция приведенная выше обновится только при пересчете листа, а не сразу же после переименования)
-
q392
- Сообщения:4
- Зарегистрирован:13 янв 2005, 06:47
18 янв 2005, 09:10
=ПСТР(ЯЧЕЙКА(«filename»;A1);НАЙТИ(«]»;ЯЧЕЙКА(«filename»;A1))+1;65535)
Формула дает ошибку #ЗНАЧ!
С уважением,
q392.
-
pashulka
- Сообщения:831
- Зарегистрирован:24 ноя 2004, 03:46
- Контактная информация:
18 янв 2005, 09:37
По всей видимости Вы проверяете работу этой формулы в только что созданной и ещё не сохранённой рабочей книге.
До тех пор пока Вы не сохраните свою новую рабочую книгу =ЯЧЕЙКА(«имяфайла»;A1) будет = «» и следовательно Вы вряд ли получите имя рабочего листа.
-
q392
- Сообщения:4
- Зарегистрирован:13 янв 2005, 06:47
18 янв 2005, 11:55
Спасибо, формула работает.
С уважением,
q392.
-
Naeel Maqsudov
- Сообщения:2551
- Зарегистрирован:20 фев 2004, 19:17
- Откуда:Moscow, Russia
- Контактная информация:
19 мар 2016, 13:51
В англоязычной версии эта формула будет выглядеть так:
=MID(CELL(«filename»;A1);FIND(«]»;CELL(«filename»;A1))+1;65535)
Обращение к рабочим листам Excel из кода VBA. Переименование листов, скрытие и отображение с помощью кода VBA Excel. Свойства Worksheets.Name и Worksheets.Visible.
Обращение к рабочим листам
Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.
Откройте редактор VBA и обратите внимание на вашу книгу в проводнике, где уникальные имена листов указаны без скобок, а в скобках — имена листов, отображаемые на ярлычках в открытой книге Excel. Уникальные имена листов отсортированы по алфавиту и их расположение по порядку не будет соответствовать их индексам (номерам), если листы перемещались по отношению друг к другу. Индексы листов смотрите по порядку расположения ярлычков в открытой книге. Переместили листы — изменились их индексы.
Обращение к рабочему листу в коде VBA Excel:
‘По уникальному имени УникИмяЛиста ‘По индексу Worksheets(N) ‘По имени листа на ярлычке Worksheets(«Имя листа») |
- УникИмяЛиста — уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
- N — индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
- Имя листа — имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.
Количество листов в рабочей книге Excel определяется так:
‘В активной книге Worksheets.Count ‘В любой открытой книге, ‘например, в «Книга1.xlsm» Workbooks(«Книга1.xlsm»).Worksheets.Count |
Переименование листов
В VBA Excel есть некоторые особенности в наименовании листов, так как у рабочего листа есть два свойства, связанных с именем: (Name) и Name. Откройте окно «Properties» в редакторе VBA, нажав клавишу «F4», и выделите любой лист в проводнике. Вы увидите, что в окне «Properties» свойству (Name) в скобках соответствует в проводнике уникальное имя листа без скобок, а свойству Name без скобок соответствует изменяемое имя листа в скобках. Оба имени в окне «Properties» можно редактировать.
С помощью кода VBA Excel можно редактировать только имя листа Name, отображаемое на ярлычке листа и в проводнике без скобок. Для этого используется свойство рабочего листа Worksheets.Name со следующим синтаксисом:
expression.Name
где expression — переменная, представляющая собой объект Worksheet. Смена имени осуществляется путем присвоения нового значения свойству Worksheets.Name.
Допустим, у нас есть лист с уникальным именем (Name) — Лист1, индексом — 1 и именем Name — МойЛист, которое необходимо заменить на имя — Реестр.
Лист1.Name = «Реестр» Worksheets(1).Name = «Реестр» Worksheets(«МойЛист»).Name = «Реестр» |
Скрытие и отображение листов
Для скрытия и отображения рабочих листов в VBA Excel используется свойство Worksheet.Visible со следующим синтаксисом:
expression.Visible
где expression — переменная, представляющая собой объект Worksheet. Свойству Worksheet.Visible могут присваиваться следующие значения:
- False — лист становится невидимым, но он будет присутствовать в списке скрытых листов, и пользователь сможет его отобразить с помощью инструментов рабочей книги Excel.
- xlVeryHidden — лист становится супер невидимым и его не будет в списке скрытых листов, пользователь не сможет его отобразить. Актуально для Excel 2003-2016.
- True — лист становится видимым.
Аналоги присваиваемых значений:
- False = xlHidden = xlSheetHidden = 1
- xlVeryHidden = xlSheetVeryHidden = 2
- True = xlSheetVisible = -1 (константа xlVisible вызывает ошибку)
Примеры:
Лист1.Visible = xlSheetHidden Лист2.Visible = —1 Worksheets(Worksheets.Count).Visible = xlVeryHidden Worksheets(«МойЛист»).Visible = True |
Как создать, скопировать, переместить или удалить рабочий лист с помощью кода VBA Excel, смотрите в этой статье.