Makro za umetanje radnog lista - Excel savjeti

Sadržaj

"Stuck in NJ" postavio je ovotjedno pitanje:

Izrađujem Excel radnu knjigu koja sadrži tablice prodaje. Prvi Excel radni list odgovara prvom prodajnom teritoriju u tvrtki (npr. FL01.) Naziv kartice radnog lista (kao i ćelija A1) je broj prodajnog teritorija FL01. Podaci koji pokreću grafikone nalaze se zdesna (izvan raspona za ispis koji sam postavio) i popunjavaju se iz druge excelove radne knjige koristeći VLOOKUP s brojem prodajnog teritorija FL01 u ćeliji A1 kao ključem pretraživanja. Moram dodati u radnu knjigu 76 identičnih radnih listova (po jedan za svako prodajno područje) tako da naziv kartice i ćelija A1 svakog lista budu jednaki uzastopnim brojevima prodajnih teritorija (npr. FL01, FL02, LK01, LK02.) Kako to učiniti u automatizirani način?

To se lako postiže VBA makronaredbom, ali dopustite mi da prikrijem savjet kako to radite ručno. Nakon što postavite list s opsezima formatiranja i ispisa, možete lako duplicirati list desnim klikom na karticu za taj list. Na izborniku koji se pojavi odaberite Premjesti ili Kopiraj. U dijaloškom okviru Premjesti ili kopiraj odaberite "(pomakni se do kraja)" i označite okvir "Stvori kopiju", a zatim kliknite U redu. Kopija vašeg lista s oblikovanjem bit će dodana kao novi radni list u vašu radnu knjigu. (Da biste ubrzali ovaj postupak, držite tipku Ctrl dok povlačite karticu radnog lista udesno.) Obično ćete željeti preimenovati list. Desnom tipkom miša kliknite novu karticu, odaberite preimenovanje i upišite značajno ime.

Da bi makronaredba Excel mogla raditi, potreban joj je popis teritorija. Prije nego što napišete makronaredbu, u ovu knjigu umetnite novi list pod nazivom Podaci. U ćeliju A1 unesite drugi prodajni teritorij (FL02 u vašem primjeru). Nastavite s unosom svih prodajnih područja dolje u stupac A. Ne ostavljajte nijedan prazan redak.

Umetnite novu makronaredbu i kopirajte ovaj kod:

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

Makronaredba koristi naredbu Sheets (). Copy koja čini isto što i ručno kliknuti Premjesti ili Kopiraj. Prije izrade svake kopije, saznajem broj listova pomoću svojstva Sheets.Count. Znam da postoji 56 listova i ubacim novi list, označit će se kao Listovi (57). Smatram da je pomalo nepredvidivo pogoditi kako će Excel imenovati novi list, pa za identifikaciju lista koristim numeričke indeksne brojeve. Nakon što novi naziv preimenujem u "Sheets (LastSheet + 1) .Name = ThisTerr", tada se mogu vratiti na svoj preferirani način upućivanja na list koristeći njegovo ime.

Imajte na umu da popis teritorija na popisu ne bi trebao sadržavati FL01. Pokušaj preimenovanja kopije u kopiju FL01 s istim imenom uzrokovat će pogrešku u makronaredbi.

Zanimljivi članci...