Excel переименовать группу листов

Обычно для переименования листов в Excel мы можем быстро дважды щелкнуть вкладку листа или щелкнуть правой кнопкой мыши вкладку листа, чтобы выбрать команду «Переименовать» для переименования листов. Это очень удобно, чтобы переименовать один или два листа в Excel, но если мы хотим переименовать несколько листов в рамках одной операции, как мы можем это сделать?

Использование команды Rename для переименования листов
Использование кода VBA для переименования нескольких листов
Использование удобного инструмента для удобного переименования нескольких листов


Использование команды Rename для переименования листов

Мы можем быстро переименовать листы в Excel с помощью Переименовывать команду в соответствии со следующими процедурами:

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

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


Наблюдения и советы этой статьи мы подготовили на основании опыта команды Переименовать несколько листов полезности Kutools for Excel может помочь вам легко переименовать несколько листов одновременно в Excel.
Скачать сейчас! (30-дневная бесплатная трасса)


Использование кода VBA для переименования нескольких листов

Здесь я представлю вам два кода VBA для переименования нескольких листов.

1. Код VBA для одновременного переименования нескольких листов по желаемому имени.

Используя следующий код VBA, вы можете быстро переименовать все листы текущей книги с тем же префиксом в их именах листов, например: KTE-order1, KTE-order 2 и KTE-order 3…

1. Нажмите на Застройщик > Визуальный Бейсики нажмите Вставить > Модули в Приложение Microsoft Visual Basic для Windows.

2. Скопируйте и вставьте следующий код в Модули

VBA: переименуйте все листы, введя определенное имя

Sub ChangeWorkSheetName()
'Updateby20140624
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
newName = Application.InputBox("Name", xTitleId, "", Type:=2)
For i = 1 To Application.Sheets.Count
    Application.Sheets(i).Name = newName & i
Next
End Sub

3.  Нажмите документ переименовать несколько листов-4 кнопку, чтобы выполнить код, и введите желаемое имя во всплывающем диалоговом окне. см. скриншоты:

документ переименовать листы 2

4. Нажмите OK. Затем вы увидите, что все листы переименованы.

документ переименовать листы 3

2. Код VBA для переименования нескольких листов по определенному значению ячейки на каждом листе активной книги.

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

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

2.  Нажмите Застройщик > Визуальный Бейсики нажмите Вставить > Модули в Приложение Microsoft Visual Basic Окон.

3.  Скопируйте и вставьте следующий код в модуль.

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

Sub RenameTabs()
'Updateby20140624
 For x = 1 To Sheets.Count
 If Worksheets(x).Range("A1").Value <> "" Then
 Sheets(x).Name = Worksheets(x).Range("A1").Value
 End If
 Next
 End Sub

4.  Нажмите документ переименовать несколько листов-4 кнопку для выполнения кода. Все рабочие листы переименовываются на основе содержимого ячеек A1.

Ноты:

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

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


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

Наблюдения и советы этой статьи мы подготовили на основании опыта команды Переименовать несколько листов инструмент Kutools for Excel очень удобен для переименования всех листов или выбранных конкретных листов текущей книги.

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

1. Переименуйте несколько рабочих листов с определенными данными, используя Kutools for Excel

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

1.  Нажмите Кутулс Плюс > Рабочий лист > Переименовать листы. Смотрите скриншот:

2. Задайте настройки в Переименовать несколько листов диалоговое окно. Смотрите скриншот:

документ переименовать листы 5

1. Выберите листы, которые вы хотите переименовать, из Worksheets .

2. Выберите один тип, листы которого вы хотите переименовать в Параметры переименования.

3. Введите конкретное значение в Из поля ввода.

3. Затем нажмите OK. Вы получите следующие результаты:

документ переименовать листы 6

2. Переименуйте несколько рабочих листов со значениями ячеек, используя Kutools for Excel

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

1. Примените эту утилиту, нажав Предприятие > Рабочий лист > Переименовать несколько листов . И в Переименовать несколько листов диалоговом окне укажите следующие параметры:

документ переименовать листы 7

1. Выберите листы, которые вы хотите переименовать, из Worksheets .

2. Выберите один тип, листы которого вы хотите переименовать в Параметры переименования.

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

3.  Затем нажмите OK. Вы получите следующий результат:

документ переименовать листы 8

3. Переименуйте несколько рабочих листов с определенным значением ячейки на каждом листе, используя Kutools for Excel

Чтобы переименовать рабочий лист с определенным значением ячейки на каждом листе, Kutools for Excel‘s Переименовать несколько листов также могу оказать вам услугу, пожалуйста, сделайте следующее:

1. Примените эту утилиту, нажав Предприятие > Рабочий лист > Переименовать несколько листов . И в Переименовать несколько листов диалоговом окне укажите следующие параметры:

документ переименовать листы 9

1. Выберите листы, которые вы хотите переименовать, из Worksheets .

2. Выберите один тип, листы которого вы хотите переименовать в Параметры переименования.

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

2. Затем нажмите Ok кнопки, имена рабочих листов были переименованы с конкретным значением ячейки на каждом листе, см. снимок экрана:

документ переименовать листы 10

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Демонстрация: переименуйте несколько рабочих листов с помощью 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% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Содержание

  1. Excel переименовать группу листов
  2. Проблемы с отображением видео:
  3. Как быстро переименовать листы?
  4. Макрос для копирования и переименования листов Excel
  5. Требования к именам листов
  6. Процесс переименования
  7. контекстное меню ярлыка
  8. двойной щелчок по ярлыку
  9. Как переименовать лист рабочей книги при помощи мыши?
  10. Вставка нового листа в Excel
  11. Обращение к рабочим листам
  12. Скрытие и отображение листов
  13. Описание задачи
  14. Как копировать и переименовать лист Excel макросом
  15. Перемещение/копирование листов в Excel
  16. Как сменить название листа
  17. Как изменить имя листа при помощи контекстного меню?
  18. Удаление листа в Excel

Excel переименовать группу листов

Проблемы с отображением видео:

Как быстро переименовать листы?

Типичная задача. Есть много листов названия которых нас не устраивают. Мы хотим их переименовать. Делать это вручную очень долго.

C надстройкой ЁXCEL это сделать легко.

Перейдите во вкладку «ЁXCEL» главного меню, нажмите кнопку «Листы», в выпавшем списке выберите пункт «Получить список листов книги»:

В открывшемся диалоговом окне установите переключатель в положение «Простой список листов (все листы)» и нажмите «ОК»:

Программа создаст в активной книге новый лист на который выведет названия всех листов:

Исключите из списка листы, которые вы не хотите переименовывать, а напротив оставшихся введите новые названия, чтобы получилось так:

Выделите диапазон со старыми и новыми названиями листов, п ерейдите во вкладку «ЁXCEL» главного меню, нажмите кнопку «Листы» и выберите команду «Переименовать листы из списка»:

В открывшемся диалоговом окне нажмите «ОК»:

Источник

Макрос для копирования и переименования листов Excel

Требования к именам листов

К именам листов рабочей книги предъявляется несколько ограничений:

1) длина введенного имени не должна превышать 31-го знака;

2) имя листа не должно содержать ни одного из следующих знаков: двоеточи” ( : ), косая черта ( / ), вопросительный знак ( ? ), звездочка ( * ) и квадратные скобки ( [ ] );

3) имя не должно быть пустым.

Процесс переименования

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

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

  • В наименовании не должны присутствовать такие символы: «?», «/», «», «:», «*», «[]»;
  • Название не может быть пустым;
  • Общая длина наименования не должна превышать 31 знак.

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

контекстное меню ярлыка

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

    Кликаем правой кнопкой по ярлыку, над которым хотим произвести манипуляцию. В контекстном меню выбираем пункт «Переименовать».

  • Жмем на клавишу Enter. После этого листу будет присвоено новое имя.
  • двойной щелчок по ярлыку

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

    Как переименовать лист рабочей книги при помощи мыши?

    Для переименования листа необходимо:

    1) в окне открытой книги дважды щелкнуть левой кнопкой мыши на ярлычке нужного листа;

    2) набрать нужное имя листа, соблюдая требования к листам, изложенные выше;

    3) нажать клавишу Enter на клавиатуре для закрепления введенного имени.

    Вставка нового листа в Excel

    1. Чтобы вставить новый рабочий лист, найдите и нажмите кнопку Новый лист.
    2. Откроется новый пустой лист.

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

    Обращение к рабочим листам

    Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.

    Откройте редактор VBA и обратите внимание на вашу книгу в проводнике, где уникальные имена листов указаны без скобок, а в скобках – имена листов, отображаемые на ярлычках в открытой книге Excel. Уникальные имена листов отсортированы по алфавиту и их расположение по порядку не будет соответствовать их индексам (номерам), если листы перемещались по отношению друг к другу. Индексы листов смотрите по порядку расположения ярлычков в открытой книге. Переместили листы – изменились их индексы.

    Обращение к рабочему листу в коде VBA Excel:

    • УникИмяЛиста – уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
    • N – индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
    • Имя листа – имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.

    Количество листов в рабочей книге Excel определяется так:

    Скрытие и отображение листов

    Для скрытия и отображения рабочих листов в 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 вызывает ошибку)

    Как создать, скопировать, переместить или удалить рабочий лист с помощью кода VBA Excel, смотрите в этой статье .

    Описание задачи

    Как правило, когда мы долго работаем с большим количеством листов, возникает потребность в их переименовании. Переименовать листы поштучно достаточно просто дважды кликнув по вкладке и введя новое название. Однако, если листов десятки, то это утомительно и отнимает время. Гораздо удобнее использовать надстройку VBA-Excel.

    C помощью нее переименовать все листы в книге можно следующим образом:

    1. Нужно подготовить два списка. Первый с перечнем наименований текущих листов. Второй – с новыми наименованиями листов. Проще всего сделать два столбца в первом старые наименования и рядом список, как нужно переименовать.
    2. Перейдите на вкладку VBA-Excel (она будет доступна после установки программы).
    3. В меню Диспетчеры найдите пункт Диспетчер листов.
    4. В диспетчере выберите команду Переименовать
    5. В диалоговом окне Переименовать листы из выделенного списка укажите диапазон со старыми наименованиями листов и аналогичный диапазон, содержащий новые названия, которые должны получиться в процессе переименования.

      При необходимости можно заполнить диапазон текущими названиями листов нажав кнопку Заполнить.
    6. Нажмите кнопку Переименовать.

    Как копировать и переименовать лист Excel макросом

    Представьте ситуацию: Вы готовите планы работ для сотрудников определенного отдела фирмы. Пример таблицы плана выглядит так:

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

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

    Техническое Задание (ТЗ) для макроса заключается в следующем. После выделения ячеек, которые содержат названия для листов нужно скопировать лист с шаблоном для планов работ ровно столько сколько будет выделенных ячеек и ввести соответствующие названия в ярлычки.

    Для этого сначала откройте редактор кода макроса: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» (ALT+F11):

    В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него следующий код макроса:

    Sub PlanRabot()
    Dim diapaz As Range
    Dim i As Long
    Dim list As Worksheet
    On Error Resume Next
    Set diapaz = Application.InputBox( «Пожалуйста, выделите диапазон ячеек, который содержит названия для новых листов!» , Type:=8)
    On Error GoTo 0
    If diapaz Is Nothing Then Exit Sub
    Set list = ActiveSheet
    For i = 1 To diapaz.Count
    list.Copy after:=ActiveSheet
    ActiveSheet.Name = Left(diapaz(i), 31)
    Next
    End Sub

    Теперь если вы хотите скопировать лист шаблона для заполнения плана работ и создать копии плана для каждого сотрудника имена с фамилиями которых будут присвоены названиям листа, то перейдите на исходный лист с шаблоном плана работ и выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«PlanRabot»-«Выполнить». Сразу же после запуска макроса появиться диалоговое окно:

    Теперь перейдите на лист «Имена и Фамилии» и выделите в нем диапазон ячеек, которые содержат имена и фамилии сотрудников. И нажмите на кнопку ОК.

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

    Перемещение/копирование листов в Excel

    Перемещать листы в Excel с помощью мышки очень просто: возьмите ярлычок листа и, двигаясь по горизонтали, перетащите его на новое место.

    Если во время этой операции вы нажмете и будете удерживать клавишу [Ctrl], то лист… правильно, скопируется! (Вспомните, как мы копировали файлы в WINDOWS ). То же самое можно делать с группой листов.

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

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

    Задание для самостоятельной работы:

    В книге Мои таблицы. xls переместите лист Население Земли в конец книги, верните его на прежнее место, сделайте копию листа в этой же книге, скопируйте его в новую книгу.

    Создайте пустой файл Мои таблицы-копии.xls ( для этого новую рабочую книгу сохраните под этим названием в каталоге C:ST). Скопируйте в него лист Население Земли.

    Как сменить название листа

    При создании новой книги Excel рабочие листы по умолчанию носят имя Лист1, Лист2 и т.д.

    Как правило, листы переименовывают в более подходящие имена, в зависимости от его содержания. Это может быть и «Отчет» и «График» и т.д. Чтобы переименовать название листа, дважды кликните на ярлыке данного листа.

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

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

    2. В названии листа нельзя прописывать следующие символы:

    (обратная косая черта);

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

    Как изменить имя листа при помощи контекстного меню?

    Чтобы переименовать лист при помощи контекстного меню, нужно:

    1) в окне открытой книги один раз кликнуть правой кнопкой мыши на ярлыке нужного листа;

    2) в контекстном меню выбрать пункт “Переименовать”;

    3) набрать новое имя листа в соответствии с требованиями к именам листов;

    4) нажать клавишу Enter на клавиатуре, чтобы закрепить новое имя.

    Удаление листа в Excel

    1. Щелкните правой кнопкой мыши по ярлычку листа, который необходимо удалить, и из контекстного меню выберите пункт Удалить.
    2. Лист будет удален.

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

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

    Источник

    Типичная задача. Есть много листов названия которых нас не устраивают. Мы хотим их переименовать. Делать это вручную очень долго.

    C надстройкой ЁXCEL это сделать легко.

    Перейдите во вкладку «ЁXCEL» главного меню, нажмите кнопку «Листы», в выпавшем списке выберите пункт «Получить список листов книги»:

    В открывшемся диалоговом окне установите переключатель в положение «Простой список листов (все листы)» и нажмите «ОК»:

    Программа создаст в активной книге новый лист на который выведет названия всех листов:

    Как быстро переименовать листы?

    Исключите из списка листы, которые вы не хотите переименовывать, а напротив оставшихся введите новые названия, чтобы получилось так:

    kak-bystro-pereimenovat-listy_2.png

    Выделите диапазон со старыми и новыми названиями листов, перейдите во вкладку «ЁXCEL» главного меню, нажмите кнопку «Листы» и выберите команду «Переименовать листы из списка»:

    kak-bystro-pereimenovat-listy_3.png

    В открывшемся диалоговом окне нажмите «ОК»:

    kak-bystro-pereimenovat-listy_4.png

    Указанные листы будут переименованы.

    Добавить комментарий

     

    Piddy

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

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

    #1

    11.07.2017 21:10:08

    Добрый вечер.

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

    макросов

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

    В столбце G указаны пути к файлам. Столбец B содержит имена листов в соответствии с именем файла. Некоторые файлы содержат более одного листа.
    Листы, названия которых должны быть переименованы подсвечены желтым. Например, лист в именем «false_sample_ad» должен быть переименован в «true_sample». НО. Есть листы, которые называются «false_sample 2017», поэтому они должны быть переименованы в «true_sample_2»

    Пока получилось набросать только вариант с переименованием листов текущей книги на основе одной ячейки. Как это оформить в виде цикла для пробега по столбцам — не додумал.

    Код
    Sub RS()
    For i = 1 To Sheets.Count
    If Worksheets(i).Range("A1").Value <> "" Then
    Sheets(i).Name = Worksheets(i).Range("A1").Value
    End If
    Next
    End Sub

    Есть ли какие-то идеи? Сам процесс также тяжело проделать вручную, так как файлов очень много.

    Заранее благодарен.

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

    • example.xlsx (13.28 КБ)

     

    Nordheim

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

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

    #2

    11.07.2017 22:33:26

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

    Код
    Sub test()
    Dim i&, x&
    Dim dicOb As Object, dicOb1 As Object
    Dim book1 As Workbook, book2 As Workbook, sht1 As Worksheet
    Dim arr1(), arr2$(), ikey, jkey
    
    Application.ScreenUpdating = False
    Set dicOb = CreateObject("Scripting.Dictionary")
    Set dicOb1 = CreateObject("Scripting.Dictionary")
    dicOb1.comparemode = 1
    Set book1 = ThisWorkbook
    With book1
        Set sht1 = .Sheets(1)
        With sht1
            i = .Cells(.Rows.Count, "g").End(xlUp).Row
            arr1 = .Range(.Range("b2"), .Range("g" & i))
            For i = LBound(arr1) To UBound(arr1)
                dicOb.Item(CStr(arr1(i, UBound(arr1, 2)))) = dicOb.Item(CStr(arr1(i, UBound(arr1, 2)))) & arr1(i, 2) & ","
            Next i
        End With
    End With
    For Each ikey In dicOb.keys
        x = 0
        arr2 = Split(Left(dicOb.Item(ikey), Len(dicOb.Item(ikey)) - 1), ",")
        dicOb1.RemoveAll
        For Each jkey In arr2
            dicOb1.Item(CStr(jkey)) = dicOb1.Item(CStr(jkey))
        Next jkey
        Set book2 = Workbooks.Open(Filename:=ikey)
        With book2
            Do Until .Sheets.Count >= dicOb1.Count
                .Sheets.Add
            Loop
            For Each jkey In dicOb1.keys
                x = x + 1
                .Sheets(x).Name = jkey
            Next jkey
            .Close True
        End With
    Next ikey
    Application.ScreenUpdating = True
    End Sub

    Изменено: Nordheim12.07.2017 09:59:33

    «Все гениальное просто, а все простое гениально!!!»

     

    kuklp

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

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

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

    Изменено: kuklp12.07.2017 08:45:26

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

     

    Piddy

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

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

    #4

    13.07.2017 00:30:18

    Коллеги, спасибо за идеи
    Nordheim,разобрался в Вашем коде.
    Насколько я понял, код работает для значения ячейки b2, но суть в том, что сначала макрос должен пробегать по всем 51 строкам столбца B и если они помечены желтым/содержат заполенную ячейку в столбце A, то такому листу присваивается имя
    kuklp, я пробовал запустить Ваш код

    Код
    Public Sub www()
        Dim wb As Workbook, i&
        On Error Resume Next
        For i = 2 To 52
            If Cells(i, 2).Interior.ColorIndex = 6 Then
                Set wb = Workbooks.Open(Cells(i, 7).Value, False)
                wb.Sheets(Cells(i, 2).Value).Name Cells(i, 1).Value
                wb.Close -1: Set wb = Nothing
            End If
        Next
    End Sub
    
    

    Он правильно запускает цикл по файлам, но не делает (судя по Debug) цикл по всем листам на предмет соответствия имен листов значению столбца B. Я попытался добавить цикл переименования листов по критерию, но пока получилось только так.

    Код
    Public Sub www()
        Dim wb As Workbook, i&
        On Error Resume Next
        For i = 2 To 52
            If Cells(i, 2).Interior.ColorIndex = 6 Then
                Set wb = Workbooks.Open(Cells(i, 7).Value, , False, , , , , , , True)
                For Each sh In wb.Worksheets
                    sh(Cells(i, 2).Value).Name.Activate = Cells(i, 1).Value
                Next
                wb.Close 0
                End If
        Next
    End Sub

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

    Изменено: Piddy13.07.2017 00:33:57

     

    Nordheim

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

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

    Переименовываться должны только те листы которые выделены желтым в 1столбце или во втором? 2

    «Все гениальное просто, а все простое гениально!!!»

     

    Piddy

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

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

    Nordheim,Во втором столбце. То есть например в строке 4 «false_sample_ad» должен замениться на «true sample». И так ещё для трёх строк.

     

    Nordheim

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

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

    И соответственно изменения только в тех файлах и только те листы которые выделены желтым?

    «Все гениальное просто, а все простое гениально!!!»

     

    Piddy

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

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

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

    Изменено: Piddy13.07.2017 08:36:29

     

    Nordheim

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

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

    т.е. за критерий берется желтый цвет? или неравенство значений  в ячейках A и B одной строки, это важно!

    «Все гениальное просто, а все простое гениально!!!»

     

    Piddy

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

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

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

    Добавил файл, чтобы вы поняли.

    Изменено: Piddy13.07.2017 09:40:20

     

    Nordheim

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

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

    Так в итоге на что нужно ориентироваться цвет или несовпадение?

    «Все гениальное просто, а все простое гениально!!!»

     

    Piddy

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

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

    Nordheim,несовпадение, см. файл.

    example (1).xlsx  

     

    Nordheim

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

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

    Пример: Есть файл abc 132.xlsx что нужно в нем поменять и на что?

    «Все гениальное просто, а все простое гениально!!!»

     

    Nordheim

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

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

    бывает ситуация когда в одном файле нужно менять наименование 2 листов?

    «Все гениальное просто, а все простое гениально!!!»

     

    Piddy

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

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

    Nordheim,да, бывает, пример смотрите в строках 44-46

     

    Nordheim

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

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

    #16

    13.07.2017 10:12:44

    для изменения одного листа!

    Код
    Sub test()
    Dim i&, j&, ikey
    Dim dicOb As Object, dicOb1 As Object, sh As Worksheet
    Dim book1 As Workbook, book2 As Workbook, sht1 As Worksheet
    
    Application.ScreenUpdating = False
    Set dicOb = CreateObject("Scripting.Dictionary")
    Set dicOb1 = CreateObject("Scripting.Dictionary")
    
    Set book1 = ThisWorkbook
    With book1
        Set sht1 = .Sheets(1)
        With sht1
            j = .Cells(.Rows.Count, "g").End(xlUp).Row
            For i = 2 To j
                If .Range("a" & i) <> .Range("b" & i) Then
                    dicOb.Item(CStr(.Range("g" & i))) = .Range("b" & i)
                    dicOb1.Item(CStr(.Range("g" & i))) = .Range("a" & i)
                End If
            Next i
        End With
    End With
    For Each ikey In dicOb.keys
        Set book2 = Workbooks.Open(Filename:=ikey)
        With book2
            For Each sh In .Worksheets
                If sh.Name = dicOb.Item(ikey) Then sh.Name = dicOb1.Item(ikey)
            Next sh
            .Close True
        End With
    Next ikey
    Application.ScreenUpdating = True
    End Sub

    Про 44-46 строки, там тоже один лист, разве не так?

    Изменено: Nordheim13.07.2017 10:13:10

    «Все гениальное просто, а все простое гениально!!!»

     

    Nordheim

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

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

    если бывает больше одного листа то нужен пример во что.
    И это совсем другой код и переменные!

    «Все гениальное просто, а все простое гениально!!!»

     

    Piddy

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

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

    #18

    13.07.2017 10:22:21

    Цитата
    Nordheim написал:
    бывает ситуация когда в одном файле нужно менять наименование 2 листов?

    Я правильно вас понял, что вы имеете в виду изменять наименование 2 листов в одной книге? Объясню на примере, есть книга «abc 215_215.2.xlsx» у него листы false_sample_2016, false_sample 2017, false_sample_2018 и каждому из них присваивается свое наименование, указанное в столбце A. И может быть несколько таких файлов.
    Или же вы имеете в виду ситуацию, когда нужно присвоить имена листам в одной книге, и получается, что им возможно могут присвоиться одинаковые имена?

    Цитата
    Nordheim написал:
    если бывает больше одного листа то нужен пример во что.
    И это совсем другой код и переменные!

    Да, но ведь цикл в коде у вас пробегает по все листам книги

    Код
    With book2
            For Each sh In .Worksheets
                If sh.Name = dicOb.Item(ikey) Then sh.Name = dicOb1.Item(ikey)
            Next sh
            .Close True
        End With
    

    Значит теоретически если он еще раз пробежится по столбцам A,B, то сможет присвоить новое наименования оставшимся листам.

    Цитата
    Nordheim написал:
    Про 44-46 строки, там тоже один лист, разве не так?

    Извините, не перезалил файл. См. к этому сообщению вложение.  

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

    • example (1) (1).xlsx (13.35 КБ)

    Изменено: Piddy13.07.2017 10:31:51

     

    Nordheim

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

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

    Имелись ввиду именно  листы.

    «Все гениальное просто, а все простое гениально!!!»

     

    Piddy

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

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

    #20

    13.07.2017 10:33:06

    Nordheim,значит мы оба идентично рассуждаем.

    Цитата
    Piddy написал:
    есть книга «abc 215_215.2.xlsx» у него листы false_sample_2016, false_sample 2017, false_sample_2018 и каждому из них присваивается свое наименование, указанное в столбце A.

    Прочитайте пожалуйста измененный комментарий выше.

    Изменено: Piddy13.07.2017 10:33:42

     

    Nordheim

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

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

    #21

    13.07.2017 10:51:28

    Пробуйте!

    Код
    Sub test()
    Dim i&, j&, ikey, arr$(), iarr$()
    Dim dicOb As Object, dicOb1 As Object, sh As Worksheet
    Dim book1 As Workbook, book2 As Workbook, sht1 As Worksheet
    On Error Resume Next
    Application.ScreenUpdating = False
    Set dicOb = CreateObject("Scripting.Dictionary")
    Set dicOb1 = CreateObject("Scripting.Dictionary")
    Set book1 = ThisWorkbook
    With book1
        Set sht1 = .Sheets(1)
        With sht1
            j = .Cells(.Rows.Count, "g").End(xlUp).Row
            For i = 2 To j
                If .Range("a" & i) <> "" Then
                    dicOb.Item(CStr(.Range("g" & i))) = dicOb.Item(CStr(.Range("g" & i))) & .Range("b" & i) & ","
                    dicOb1.Item(CStr(.Range("g" & i))) = dicOb1.Item(CStr(.Range("g" & i))) & .Range("a" & i) & ","
                End If
            Next i
        End With
    End With
    For Each ikey In dicOb.keys
        arr = Split(Left(dicOb.Item(ikey), Len(dicOb.Item(ikey)) - 1), ",")
        iarr = Split(Left(dicOb1.Item(ikey), Len(dicOb1.Item(ikey)) - 1), ",")
        Set book2 = Workbooks.Open(Filename:=ikey)
        With book2
            For i = LBound(arr) To UBound(arr)
                .Sheets(arr(i)).Name = iarr(i)
            Next i
            .Close True
        End With
    Next ikey
    On Error GoTo 0
    Application.ScreenUpdating = True
    End Sub

    «Все гениальное просто, а все простое гениально!!!»

     

    Nordheim

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

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

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

    «Все гениальное просто, а все простое гениально!!!»

     

    Piddy

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

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

    Nordheim,я проверил макрос, он работает, спасибо Вам за ваши труды. Сейчас буду детально разбираться в коде.
    Что касается ситуации, когда для одной книги необходимо переименование нескольких листов, то здесь на реальных файлах следующая картина. Существует порядка 30 масок в столбце A, которые подставляются в качестве переименования листов, указанных в столбце B. В столбце B возможно порядка 200 различных наименований листов, которые должны быть обработаны.
    Есть вариант отфильтровывать строки по каждой маске, создавать новый лист, содержащий в столбце A именно данную маску и применять к нему Ваш макрос. Но идея состояла в том, чтобы иметь возможность переименовывать имена листов по всем маскам разово, так как файлы приходят ко мне каждый день и я их обновляю.

     

    Nordheim

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

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

    т.е. все нормально, тему можно закрывать?

    «Все гениальное просто, а все простое гениально!!!»

     

    Piddy

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

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

    Nordheim,пока не знаю. Я правильно понял, что реализовать переименование сразу нескольких листов для всех книг — задача технически сложная и проще сделать ее ручками?

     

    Nordheim

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

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

    Вопрос не понял, последний код переименовывает несколько листов (которые необходимо переименовать) во всех книгах  исходя из условия описанного в сообщении №18

    Изменено: Nordheim13.07.2017 11:24:25

    «Все гениальное просто, а все простое гениально!!!»

     

    Piddy

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

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

    Nordheim,понял, сейчас проверю.

     

    yozhik

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

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

    #28

    13.07.2017 11:57:13

    Цитата
    Piddy написал:
    файлы приходят ко мне каждый день

    Может, если необходимо хранить/накапливать/анализировать информацию целесообразнее будет использовать базу данных (Access)?..

     

    Piddy

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

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

    Nordheim,макрос работает успешно. Заметил только, что 5% не обрабатываются, но это какие-то специфические книги. Имена у их листов не совсем стандартные.
    yozhik, а access позволяет проводить аналогичные преобразования с именами листов до импорта в базу данных?

     

    Piddy

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

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

    #30

    13.07.2017 20:28:29

    Цитата
    Piddy написал:
    Заметил только, что 5% не обрабатываются, но это какие-то специфические книги. Имена у их листов не совсем стандартные.

    Разобрался, дело было в том, что наименования листов имели длину выше нормы. Спасибо Вам за 100% рабочее решение.

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

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

    Требования к именам листов

    К именам листов рабочей книги предъявляется несколько ограничений:

    1) длина введенного имени не должна превышать 31-го знака;

    2) имя листа не должно содержать ни одного из следующих знаков: двоеточи» ( : ),  косая черта ( / ), вопросительный знак ( ? ), звездочка ( * ) и квадратные скобки ( [ ] );

    3) имя не должно быть пустым.

    Как переименовать лист рабочей книги при помощи мыши?

    Для переименования листа необходимо:

    1) в окне открытой книги дважды щелкнуть левой кнопкой мыши на ярлычке нужного листа;

    2) набрать нужное имя листа, соблюдая требования к листам, изложенные выше;

    3) нажать клавишу Enter на клавиатуре для закрепления введенного имени.

    Как изменить имя листа при помощи контекстного меню?

    Чтобы переименовать лист при помощи контекстного меню, нужно:

    1) в окне открытой книги один раз кликнуть правой кнопкой мыши на ярлыке нужного листа;

    2) в контекстном меню выбрать пункт «Переименовать»;

    3) набрать новое имя листа в соответствии с требованиями к именам листов;

    4) нажать клавишу Enter на клавиатуре, чтобы закрепить новое имя.

    Переименование листа при помощи стандартного меню

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

    1) в окне открытой книги перейти на лист, который необходимо переименовать;

    2) перейти на вкладку «Главная», в группе кнопок «Ячейки» зайти в меню кнопки «Формат» и выбрать пункт «Переименовать лист»;

    3) ввести новое имя листа, соблюдая требования к именам листов;

    4) нажать клавишу Enter для закрепления нового имени.

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

    Надстройка позволяет:

    1) быстро вызывать диалоговое окно надстройки из панели инструментов;

    2) присваивать листам имена, соответствующие значениям ячеек в выделенном диапазоне (весь диапазон ячеек находится на одном листе);

    3) присваивать листам имена, соответствующие значениям ячеек с заданным адресом (каждая ячейка находится на отдельном листе);

    4) формировать список, состоящий из имен листов рабочей книги в ячейках заданного столбца (столбец можно задавать как номером, так и именем).

    kak pereimenovat listy v rabochej knige excelCompleteSolutionнадстройка для переименования листов

    Другие материалы по теме:

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