Макрос для вставки робочого аркуша - Поради Excel

Зміст

"Застряг у Нью-Джерсі" задав питання цього тижня:

Я створюю книгу Excel, яка містить графіки продажів. Перший аркуш Excel відповідає першій території продажу у компанії (наприклад, FL01.) Назва вкладки робочого аркуша (а також клітинка A1) - це номер території продажу FL01. Дані, що керують діаграмами, знаходяться праворуч (за межами діапазону для друку, який я встановив) і заповнюються з іншої книги Excel, використовуючи VLOOKUP з номером території продажу FL01 у комірці A1 як ключем пошуку. Мені потрібно додати до книги 76 однакових аркушів (по одному на кожну територію продажу), щоб назва вкладки кожного листа та комірка А1 дорівнювали послідовним номерам територій продажу (наприклад, FL01, FL02, LK01, LK02.) Як це зробити в автоматизований спосіб?

Це легко зробити за допомогою макросу VBA, але дозвольте мені охопити підказку для цього вручну. Після налаштування аркуша з форматуванням та діапазонами друку ви можете легко продублювати аркуш, клацнувши правою кнопкою миші на вкладці цього аркуша. У спливаючому меню виберіть Перемістити або Копіювати. У діалоговому вікні "Перемістити або скопіювати" виберіть "(перемістити до кінця)" і встановіть прапорець "Створити копію", а потім натисніть кнопку OK. Копія вашого аркуша з форматуванням буде додана як новий аркуш у вашу книгу. (Щоб пришвидшити цей процес, утримуючи клавішу Ctrl, перетягуючи вкладку аркуша вправо.) Зазвичай вам потрібно буде перейменувати аркуш. Клацніть правою кнопкою миші нову вкладку, виберіть перейменувати та введіть значуще ім'я.

Щоб макрос Excel працював, йому потрібен список територій. Перш ніж писати макрос, вставте в цю книгу новий аркуш із назвою Дані. У клітинку А1 введіть 2-ю територію продажу (FL02 у вашому прикладі). Продовжуйте вводити всі території продажів у стовпець А. Не залишайте порожніх рядків.

Вставте новий макрос і скопіюйте цей код:

Public Sub CopyIt() Sheets("Data").Select ' Determine how many territories are on Data sheet FinalRow = Range("A65000").End(xlUp).Row ' Loop through each territory on the data sheet For x = 1 To FinalRow LastSheet = Sheets.Count Sheets("Data").Select ThisTerr = Range("A" & x).Value ' Make a copy of Fl01 and move to end Sheets("FL01").Copy After:=Sheets(LastSheet) ' rename the sheet and set A1 = to the territory name Sheets(LastSheet + 1).Name = ThisTerr Sheets(ThisTerr).Select Range("A1").Value = ThisTerr Next x End Sub

Макрос використовує команду Sheets (). Copy, яка робить те саме, що натискання Перемістити або Копіювати вручну. Перш ніж робити кожну копію, я визначаю кількість аркушів за допомогою властивості Sheets.Count. Я знаю, якщо є 56 аркушів, і я вставляю новий аркуш, він буде називатися Аркушами (57). Я вважаю дещо непередбачуваним здогадуватися, як Excel буде називати новий аркуш, тому я використовую числові індексні номери для ідентифікації аркуша. Після того, як я перейменую новий аркуш на "Таблиці (LastSheet + 1). Ім'я = ThisTerr", я можу повернутися до мого бажаного методу посилання на аркуш, використовуючи його ім'я.

Зверніть увагу, що список територій не повинен містити FL01 у списку. Спроба перейменувати копію копії FL01 з тим самим іменем призведе до помилки в макросі.

Цікаві статті...