Makro för att infoga kalkylblad - Excel-tips

Innehållsförteckning

"Stuck in NJ" ställde veckans fråga:

Jag skapar en Excel-arbetsbok som innehåller diagram över försäljningssiffror. Det första Excel-kalkylbladet motsvarar det första försäljningsområdet i företaget (t.ex. FL01.) Kalkylbladets fliknamn (liksom cell A1) är försäljningsområdesnumret FL01. Data som driver diagrammen är till höger (utanför det utskrivbara intervallet som jag ställer in) och fylls i från en annan Excel-arbetsbok med VLOOKUP med försäljningsområdesnumret FL01 i cell A1 som uppslagstangent. Jag måste lägga till arbetsboken 76 identiska kalkylblad (en för varje försäljningsområde) så att varje ark fliknamn och cell A1 motsvarar successiva försäljningsområdesnummer (t.ex. FL01, FL02, LK01, LK02.) Hur gör jag det i en automatiserat sätt?

Detta görs enkelt med ett VBA-makro, men låt mig täcka tipsen för att göra detta manuellt. När du väl har skapat ett ark med formatering och utskriftsintervall kan du enkelt duplicera arket genom att högerklicka på fliken för det arket. Välj Flytta eller Kopiera på menyn som dyker upp. I dialogrutan Flytta eller kopiera, välj "(flytta till slutet)" och markera rutan "Skapa en kopia" och klicka sedan på OK. En kopia av ditt ark med formatering läggs till som ett nytt kalkylblad i din arbetsbok. (För att påskynda processen håller du ned Ctrl-tangenten medan du drar kalkylbladets flik till höger.) Du vill vanligtvis byta namn på arket. Högerklicka på den nya fliken, välj byta namn och skriv ett meningsfullt namn.

För att Excel-makrot ska fungera behöver det en lista med territorier. Innan du skriver makrot, sätt in ett nytt ark i den här boken med namnet Data. I cell A1 anger du det andra försäljningsområdet (FL02 i ditt exempel). Fortsätt ange alla försäljningsområden i kolumn A. Lämna inga tomma rader.

Sätt in ett nytt makro och kopiera den här koden:

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

Makrot använder sig av kommandot Ark (). Kopia som gör samma sak som att klicka på Flytta eller Kopiera manuellt. Innan jag gör varje kopia får jag reda på antalet ark med egenskapen Sheets.Count. Jag vet om det finns 56 ark och jag sätter in ett nytt ark kommer det att kallas Sheets (57). Jag tycker att det är något oförutsägbart att gissa hur Excel kommer att namnge det nya arket, så jag använder numeriska indexnummer för att identifiera arket. När jag väl har bytt namn på det nya arket med "Sheets (LastSheet + 1). Namn = ThisTerr", kan jag sedan byta tillbaka till min föredragna metod för att hänvisa till arket med hjälp av dess namn.

Observera att listan över territorier inte bör innehålla FL01 i listan. Att försöka byta namn på en kopia en kopia av FL01 med samma namn kommer att orsaka ett fel i makrot.

Intressanta artiklar...