Makro laskentataulukon lisäämiseen - Excel-vinkkejä

Sisällysluettelo

"Stuck in NJ" esitti tämän viikon kysymyksen:

Olen luomassa Excel-työkirjan, joka sisältää myyntilukujen kaaviot. Ensimmäinen Excel-laskentataulukko vastaa yrityksen ensimmäistä myyntialuetta (esim. FL01.) Taulukon välilehden nimi (samoin kuin solu A1) on myyntialueen numero FL01. Kaavioita ohjaavat tiedot ovat oikealla puolella (asettamani tulostusalueen ulkopuolella) ja ne täytetään toisesta Excel-työkirjasta, jossa käytetään hakuavaimena VLOOKUP ja myynti-alueen numero FL01 solussa A1. Minun on lisättävä työkirjaan 76 samanlaista laskentataulukkoa (yksi kutakin myyntialuetta kohti) siten, että jokaisen taulukon välilehden nimi ja solu A1 ovat yhtä suuret peräkkäisten myyntialueiden numerot (esim. FL01, FL02, LK01, LK02.) Kuinka teen sen automatisoidulla tavalla?

Tämä onnistuu helposti VBA-makrolla, mutta anna minun kattaa kärki tämän tekemiseen manuaalisesti. Kun olet määrittänyt muotoilun ja tulostusalueen sisältävän arkin, voit kopioida sen helposti napsauttamalla hiiren kakkospainikkeella kyseisen arkin välilehteä. Valitse avautuvasta valikosta Siirrä tai Kopioi. Valitse Siirrä tai kopioi -valintaikkunassa "(siirry loppuun)", tarkista "Luo kopio" -ruutu ja napsauta sitten OK. Kopio taulusta, jossa on muotoilu, lisätään uutena laskentataulukoksi työkirjaasi. (Tämän prosessin nopeuttamiseksi pidä Ctrl-näppäintä painettuna samalla kun vedät laskentataulukon välilehteä oikealle.) Yleensä haluat nimetä taulukon uudelleen. Napsauta hiiren kakkospainikkeella uutta välilehteä, valitse Nimeä uudelleen ja kirjoita mielekäs nimi.

Jotta Excel-makro toimisi, se tarvitsee luettelon alueista. Lisää ennen makron kirjoittamista tähän kirjaan uusi taulukko nimeltä Data. Syötä soluun A1 2. myyntialue (esimerkissä FL02). Jatka kaikkien myyntialueiden syöttämistä sarakkeeseen A. Älä jätä tyhjiä rivejä.

Lisää uusi makro ja kopioi tämä koodi:

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 käyttää Sheets (). Copy -komentoa, joka tekee saman kuin napsauttamalla Siirrä tai Kopioi manuaalisesti. Ennen kunkin kopion tekemistä selvitän arkkien määrän Sheets.Count-ominaisuuden avulla. Tiedän, onko arkkia 56 ja asetan uuden arkin, siihen viitataan nimellä Arkit (57). Minusta on jonkin verran arvaamatonta arvata, miten Excel nimeää uuden arkin, joten käytän numeerisia indeksinumeroita arkin tunnistamiseen. Kun olen nimennyt uuden arkin uudelleen nimellä "Sheets (LastSheet + 1) .Nimi = ThisTerr", voin sitten siirtyä takaisin suosittelemaani tapaan viitata taulukkoon käyttämällä sen nimeä.

Huomaa, että alueiden luettelossa ei saa olla FL01 luettelossa. Yritetään nimetä kopio FL01: n kopiosta samalla nimellä aiheuttaen virheen makrossa.

Mielenkiintoisia artikkeleita...