Makro for å sette inn regneark - Excel-tips

Innholdsfortegnelse

"Stuck in NJ" stilte ukens spørsmål:

Jeg lager en Excel-arbeidsbok som inneholder diagrammer over salgstall. Det første Excel-regnearket tilsvarer det første salgsområdet i selskapet (f.eks. FL01.) Regnearkets fanenavn (så vel som celle A1) er salgsområdets nummer FL01. Dataene som driver diagrammene er til høyre (utenfor det utskriftsområdet jeg har angitt) og blir fylt ut fra en annen Excel-arbeidsbok ved å bruke VLOOKUP med salgsområdet nummer FL01 i celle A1 som oppslagsnøkkel. Jeg må legge til arbeidsboken 76 identiske regneark (ett for hvert salgsområde) slik at hvert arks fanenavn og celle A1 tilsvarer suksessive salgsområdesummer (f.eks. FL01, FL02, LK01, LK02.) Hvordan gjør jeg det i en automatisert måte?

Dette oppnås enkelt med en VBA-makro, men la meg dekke tipset for å gjøre dette manuelt. Når du har satt opp et ark med formatering og utskriftsområder, kan du enkelt duplisere arket ved å høyreklikke på fanen for det arket. Velg Flytt eller Kopier fra menyen som dukker opp. Fra dialogboksen Flytt eller kopier, velg "(flytt til slutt)" og merk av i "Opprett en kopi" -boksen, og klikk deretter OK. En kopi av arket ditt med formatering vil bli lagt til som et nytt regneark i arbeidsboken. (For å øke hastigheten på denne prosessen, hold nede Ctrl-tasten mens du drar regnearkfanen til høyre.) Du vil vanligvis gi nytt navn til arket. Høyreklikk på den nye fanen, velg endre navn og skriv inn et meningsfylt navn.

For at Excel-makroen skal fungere, trenger den en liste over territorier. Før du skriver makroen, sett inn et nytt ark i denne boka som heter Data. I celle A1, skriv inn det andre salgsområdet (FL02 i eksemplet ditt). Fortsett å angi alle salgsområdene nedover i kolonne A. Ikke la tomme rader være.

Sett inn en ny makro og kopier denne 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

Makroen bruker kommandoen Ark (). Kopi som gjør det samme som å klikke Flytt eller Kopier manuelt. Før jeg gjør hvert eksemplar, finner jeg ut antall ark ved å bruke egenskapen Sheets.Count. Jeg vet at hvis det er 56 ark, og jeg setter inn et nytt ark, blir det referert til som Ark (57). Jeg synes det er noe uforutsigbart å gjette hvordan Excel vil gi navnet på det nye arket, så jeg bruker numeriske indeksnumre for å identifisere arket. Når jeg har omdøpt det nye arket med "Sheets (LastSheet + 1) .Name = ThisTerr", kan jeg deretter bytte tilbake til den foretrukne metoden jeg refererer til arket ved å bruke navnet.

Merk at listen over territorier ikke skal inneholde FL01 i listen. Hvis du prøver å gi nytt navn til en kopi, vil en kopi av FL01 med samme navn føre til feil i makroen.

Interessante artikler...