Makro za vstavljanje delovnega lista - Excel Nasveti

Kazalo

"Stuck in NJ" je ta teden postavil vprašanje:

Ustvarjam Excelov delovni zvezek, ki vsebuje grafikone prodaje. Prvi Excelov delovni list ustreza prvemu prodajnemu območju v podjetju (npr. FL01.) Ime zavihka delovnega lista (kot tudi celica A1) je številka prodajnega območja FL01. Podatki, ki poganjajo grafikone, so na desni (zunaj obsega tiskanja, ki sem ga nastavil) in so zasedeni iz drugega delovnega zvezka excel z uporabo VLOOKUP s številko prodajnega območja FL01 v celici A1 kot iskalni ključ. V delovni zvezek moram dodati 76 enakih delovnih listov (po enega za vsako prodajno območje), tako da sta ime zavihka in celica A1 vsakega lista enake zaporednim številkam prodajnega območja (npr. FL01, FL02, LK01, LK02.) Kako to storim v avtomatiziran način?

To je enostavno doseči z makro VBA, vendar naj pokrijem nasvet, če to storim ročno. Ko je list nastavljen z obsegi oblikovanja in tiskanja, ga lahko enostavno podvojite tako, da z desno miškino tipko kliknete jeziček za ta list. V meniju, ki se odpre, izberite Premakni ali Kopiraj. V pogovornem oknu Premakni ali kopiraj izberite "(premakni na konec)" in potrdite polje "Ustvari kopijo", nato kliknite V redu. Kopija vašega lista z oblikovanjem bo dodana kot nov delovni list v vaš delovni zvezek. (Če želite pospešiti ta postopek, držite tipko Ctrl, medtem ko povlečete zavihek delovnega lista v desno.) List boste običajno želeli preimenovati. Z desno miškino tipko kliknite nov zavihek, izberite preimenovanje in vnesite smiselno ime.

Za delovanje makra Excel potrebuje seznam ozemelj. Preden napišete makro, v to knjigo vstavite nov list z imenom Podatki. V celico A1 vnesite drugo prodajno območje (v vašem primeru FL02). Nadaljujte z vnašanjem vseh prodajnih območij v stolpec A. Ne puščajte praznih vrstic.

Vstavite nov makro in kopirajte to kodo:

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

Makro uporablja ukaz Sheets (). Copy, ki naredi isto kot ročni premik ali kopiranje. Preden naredim vsako kopijo, z lastnostjo Sheets.Count ugotovim število listov. Vem, da je 56 listov in vstavim nov list, ki bo naveden kot Listi (57). Zdi se mi nekoliko nepredvidljivo ugibati, kako bo Excel poimenoval nov list, zato za identifikacijo lista uporabljam številčne indeksne številke. Ko nov list preimenujem z "Sheets (LastSheet + 1) .Name = ThisTerr", lahko nato z uporabo njegovega imena preklopim nazaj na svoj najljubši način sklicevanja na list.

Upoštevajte, da seznam ozemelj na seznamu ne sme vsebovati FL01. Poskus preimenovanja kopije FL01 z istim imenom bo povzročil napako v makru.

Zanimive Članki...