Snemanje Spremeni Zaženi makro Excel - Nasveti za Excel

To je 19. tedenski namig za Excel na spletnem mestu.com. Številni nasveti za Excel vključujejo nekakšen makro trik. Ta teden za uporabnike Excela, ki še nikoli niso napisali makra, ponudim priročnik o tem, kako posneti in nato prilagoditi uporaben makro Excel.

Vzorčni podatki o naslovu

Recimo, da imate 400 vrstic naslovnih podatkov, kot so prikazani na zgornji sliki na levi. Polje z imenom je v stolpcu A, naslov ulice v stolpcu B in mesto v stolpcu C.

Vaš cilj je pretvoriti podatke v en sam stolpec, kot je prikazan na drugi sliki.

Ta preprosta težava bo uporabljena za ponazoritev snemanja, spreminjanja in nato zagona preprostega makra.

Za uporabnike programa Excel 95: Excel bo po snemanju makra dal vaš makro na list z imenom Module1 v vaši delovni zvezki. Za dostop do makra lahko preprosto kliknete na list.

Čeprav je na tem delovnem listu 400 zapisov, želim posneti majhen košček makra, ki skrbi samo za prvi naslov. Makro bo domneval, da je kazalec celice na prvem imenu. Vstavil bo tri prazne vrstice. Kopiral bo celico desno od prvotne celice v celico pod prvotno celico. Kopiral bo mestno celico v celico 2 vrstici pod prvotno celico. Nato naj premakne kazalec celice navzdol, tako da je na naslednjem imenu.

Ključno je, da ta postopek premislite, preden ga posnamete. Pri snemanju makra ne želite narediti veliko napak.

Torej, postavite kazalec celice v celico A1. Pojdite v meni in izberite Tools> Macro> Record new Macro. Pogovorno okno Snemanje makra predlaga ime Macro1. To je v redu, zato pritisnite OK.

Snemalnik makrov Excel ima eno zelo neumno privzeto nastavitev, ki jo morate nujno spremeniti, da bo ta makro deloval. V Excelu 95 pojdite na Orodja> Makro> Uporabi relativne reference V Excelu 97-2003 kliknite drugo ikono v orodni vrstici Zaustavi snemanje. Ikona je videti kot majhen delovni list. Rdeča celica v C3 kaže na drugo rdečo celico v A3. Ikona se imenuje relativni sklic. Ko je ta ikona vklopljena, jo obdaja nekaj barv. Ikona si zapomni zadnjo nastavitev iz trenutne seje programa Excel, zato jo boste morda morali nekajkrat klikniti, da ugotovite, katera metoda je vklopljena ali ne. V Excelu 2007 uporabite Pogled - Makri - Uporabi relativne reference.

V redu, pripravljeni smo iti. Sledite tem korakom:

  • Enkrat pritisnite puščico navzdol, da se premaknete v celico B1.
  • Pridržite tipko Shift in dvakrat pritisnite puščico dol, da izberete vrstice 2, 3 in 4
  • V meniju izberite Vstavi in ​​nato Vrstice, da vstavite tri prazne vrstice.
  • Pritisnite puščico gor in nato puščico desno, da se premaknete v celico B2.
  • Pritisnite Ctrl X, da izrežete celico B2.
  • Pritisnite puščico dol, puščico levo in nato Ctrl V, da jo prilepite v celico A2.
  • Pritisnite puščico gor, puščico desno, puščico desno, Ctrl X, puščico levo, puščico levo, puščico dol, puščico dol, Ctrl V, da premaknete C1 na A3.
  • Dvakrat pritisnite puščico navzdol, tako da je kazalec celice zdaj na naslednjem imenu v vrstici A5.
  • Kliknite ikono "Stop Recording" v orodni vrstici, da ustavite snemanje makra.

No, posneli ste svoj prvi makro. Oglejmo si. Odprite Orodja> Makro> Makri. Na seznamu označite Macro1 in pritisnite gumb Uredi. Morali bi videti nekaj takega.

Sub Macro1() ' ' Macro1 Macro ' Macro recorded 4/18/99 by Reader ' ' ActiveCell.Offset(1, 0).Range("A1:A3").Select Selection.EntireRow.Insert ActiveCell.Offset(-1, 1).Range("A1").Select Selection.Cut ActiveCell.Offset(1, -1).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Selection.Cut ActiveCell.Offset(2, -2).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(2, 0).Range("A1").Select End Sub

Hej, če nisi programer, se to verjetno zdi precej zastrašujoče. Ne dovolite, da bo. Če je nekaj, česar ne razumete, je odlična pomoč. Kliknite kurzor nekje v ključni besedi Offset in pritisnite F1. Če ste namestili datoteko s pomočjo VBA, boste videli temo pomoči za ključno besedo Offset. Pomoč vam pove sintakso stavka. Piše, da je Offset (RowOffset, ColumnOffset). Še vedno ni zelo jasno? Poiščite zeleno podčrtano besedo "primer" na vrhu pomoči. Excelovi primeri VBA vam bodo omogočili, da se naučite, kaj se dogaja. V primeru Offset piše, da za aktiviranje celice dve vrstici spodaj in tri vrstice desno od trenutne celice uporabite:

ActiveCell.Offset(3, 2).Activate

V redu, to je namig. Funkcija odmika je način premikanja po Excelovi preglednici. Glede na to bit informacij lahko nekako vidite, kaj makro počne. Prvi odmik (1, 0) je, kjer smo kazalec celic pomaknili navzdol na A2. Naslednji odmik je kraj, kjer smo se premaknili za eno vrstico (-1 vrstice) in za več kot 1 stolpec. V makro morda ne boste razumeli ničesar drugega, vendar je vseeno koristen.

Vrnite se na Excelov delovni list. Postavite kazalec celice v celico A5. Izberite Orodja> Makro> Makri> Makro1> Zaženi. Makro se zažene in vaš drugi naslov je formatiran.

Morda pravite, da je izbira celotnega dolgega velikega niza ukazov težja kot samo ročno oblikovanje. V redu, nato naredite Orodja> Makro> Makri> Možnosti. V polju za bližnjico recimo Ctrl + w je bližnjica za ta makro. Kliknite V redu in nato opustite pogovorno okno Makro z možnostjo Prekliči. Ko pritisnete Ctrl w, se bo makro zagnal. Naslov lahko oblikujete z enim pritiskom na tipko.

Ste pripravljeni na velik čas? Koliko naslovov vam ostane? Nekajkrat sem zadel Ctrl wa, tako da mi je ostalo še 395. Vrnite se na svoj makro. Celotno kodo makra bomo postavili v zanko. Pred prvo vrstico kode makra vstavite novo vrstico z napisom "Do Do Activecell.value =" "". Pred vrstico End Sub vstavite vrstico z napisom "Loop". Zanka Do bo izvajala vse med vrstico Do in Loop, dokler ne zaide v prazno vrstico. Makro je zdaj videti takole:

Sub Macro1() ' ' Macro1 Macro ' Macro recorded 4/18/99 by Reader ' ' Do Until ActiveCell.Value = "" ActiveCell.Offset(1, 0).Range("A1:A3").Select Selection.EntireRow.Insert ActiveCell.Offset(-1, 1).Range("A1").Select Selection.Cut ActiveCell.Offset(1, -1).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Selection.Cut ActiveCell.Offset(2, -2).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(2, 0).Range("A1").Select Loop End Sub

Vrnite se na svoj Excelov list. Postavite kazalec celice na naslednje ime. Pritisnite Ctrl w in makro bo v nekaj sekundah formatiral vse vaše zapise.

Avtorji Excelovih knjig pravijo, da s snemanjem makra ne morete storiti ničesar koristnega. Ni res! Za osebo, ki bo morala 800-krat izrezati in prilepiti, je ta makro zelo koristen. Snemanje in prilagajanje je trajalo nekaj minut. Da, profesionalni programerji bodo poudarili, da je koda strašno neučinkovita. Excel tja vloži cel kup stvari, ki jih ni treba vstaviti. Da, če ste vedeli, kaj počnete, lahko isto nalogo opravite s polovico vrstic, ki bodo namesto v 3 sekundah potekale v 1,2 sekunde. PA KAJ? 3 sekunde so veliko hitrejše od 30 minut, ki bi jih opravila naloga.

Še nekaj nasvetov za začetne makro snemalnike:

  • Apostrof je uporabljen, vendar pomeni komentar. VBA ne upošteva vsega po apostrofu
  • To je objektno usmerjeno programiranje. Osnovna sintaksa je object.action. Če bi objektno usmerjeni prevajalnik igral nogomet, bi rekel "ball.kick", da bi brcnil žogo. Torej "Selection.Cut" pravi, da naredite "edit> cut" na trenutni izbiri.
  • V zgornjem primeru so modifikatorji obsega glede na aktivno celico. Če je aktivna celica v B2 in izgovorite "ActiveCell.Range (" A1: C3 "). Izberite", potem izberete območje 3 vrstice s 3 stolpci, ki se začne v celici B2. Z drugimi besedami, izberete B2: D4. Če izgovorite "ActiveCell.Range (" A1 ")", izberete obseg celic 1 x 1, ki se začne z aktivno celico. To je neverjetno odveč. Enakovredno je reči "ActiveCell.Select".
  • Shranite delovni zvezek, preden prvič zaženete makro. Na ta način lahko, če ima napako in naredi kaj nepričakovanega, zaprete brez shranjevanja in se vrnete na shranjeno različico.

Upajmo, da vam bo ta preprost primer zagotovil zapisovalce makrov za začetnike, da boste naslednjič, ko boste v Excelu opravili ponavljajočo se nalogo, posneli preprost makro.

Zanimive Članki...