Snimanje Izmjena Pokreni Excel Macro - Excel savjeti

Ovo je 19. tjedni savjet za Excel na web stranici.com. Mnogi Excel-ovi savjeti uključuju neku vrstu makro trika. Ovaj tjedan za korisnike Excela koji nikada nisu napisali makronaredbu nudim priručnik o tome kako snimiti, a zatim prilagoditi korisnu Excel makronaredbu.

Uzorak podataka o adresi

Recimo da imate 400 redaka podataka o adresama poput onih prikazanih na gornjoj slici lijevo. Polje s imenom nalazi se u stupcu A, adresa ulice u stupcu B, a grad u stupcu C.

Vaš je cilj pretvoriti podatke u jedan stupac poput onoga prikazanog na drugoj slici.

Ovaj jednostavan problem poslužit će za ilustraciju snimanja, izmjene i izvođenja jednostavne makronaredbe.

Za korisnike programa Excel 95: Nakon snimanja makronaredbe, Excel će vašu makronaredbu staviti na list nazvan Module1 u vašoj radnoj knjizi. Možete samo kliknuti na list za pristup makronaredbi.

Iako na ovom radnom listu ima 400 zapisa, želim zabilježiti mali dio makronaredbe koji se brine samo za prvu adresu. Makronaredba će pretpostaviti da je pokazivač ćelije na prvom imenu. Umetnut će tri prazna retka. Kopirat će ćeliju s desne strane izvorne ćelije u ćeliju ispod izvorne ćelije. Kopirat će gradsku ćeliju u ćeliju 2 reda ispod izvorne ćelije. Zatim bi trebao pomaknuti pokazivač ćelije prema dolje, tako da je na sljedećem imenu.

Ključno je razmisliti o ovom procesu prije nego što ga zabilježite. Ne želite napraviti puno pogrešaka prilikom snimanja makronaredbe.

Dakle, stavite pokazivač ćelije u ćeliju A1. Idite na izbornik i odaberite Tools> Macro> Record new Macro. Dijalog Snimanje makronaredbe sugerira ime Macro1. Ovo je u redu, pa pritisnite OK.

Snimač makronaredbi Excel ima jednu vrlo glupu zadanu postavku koju morate apsolutno promijeniti da bi ova makronaredba funkcionirala. U programu Excel 95 idite na Alati> Makronaredba> Upotrijebi relativne reference U programu Excel 97-2003 kliknite drugu ikonu na alatnoj traci Zaustavi snimanje. Ikona izgleda poput majušnog radnog lista. Crvena stanica u C3 upućuje na drugu crvenu stanicu u A3. Ikona se naziva Relativna referenca. Kad je ova ikona "uključena", oko ikone postoji neka boja. Ikona pamti zadnju postavku iz trenutne sesije programa Excel, pa ćete je možda morati kliknuti nekoliko puta da biste utvrdili koja je metoda uključena ili ne. U programu Excel 2007 koristite Pogled - Makronaredbe - Koristite relativne reference.

OK, spremni smo za polazak. Prati ove korake:

  • Pritisnite jednom strelicu prema dolje da biste se pomaknuli do ćelije B1.
  • Držite pritisnutu tipku Shift i dvaput pritisnite strelicu prema dolje za odabir redaka 2, 3 i 4
  • Na izborniku odaberite Umetni, a zatim odaberite Redci za umetanje tri prazna retka.
  • Pritisnite strelicu prema gore, a zatim strelicu nadesno za pomicanje do ćelije B2.
  • Pritisnite Ctrl X da biste izrezali ćeliju B2.
  • Pritisnite strelicu prema dolje, lijevu strelicu, a zatim Ctrl V da biste zalijepili u ćeliju A2.
  • Pritisnite strelicu prema gore, strelicu udesno, strelicu udesno, Ctrl X, strelicu ulijevo, strelicu ulijevo, strelicu prema dolje, strelicu prema dolje, Ctrl V za pomicanje C1 do A3.
  • Dvaput pritisnite strelicu prema dolje tako da se pokazivač ćelije sada nalazi na sljedećem imenu u retku A5.
  • Kliknite ikonu "Stop Recording" na alatnoj traci da biste zaustavili snimanje makronaredbe.

Pa, snimili ste svoju prvu makronaredbu. Pogledajmo. Idite na Alati> Makronaredbe> Makronaredbe. S popisa označite Macro1 i pritisnite gumb Uredi. Trebali biste vidjeti nešto što izgleda ovako.

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, ako niste programer, to vjerojatno izgleda prilično zastrašujuće. Neka to ne bude. Ako postoji nešto što ne razumijete, postoji izvrsna pomoć. Kliknite pokazivač negdje u ključnoj riječi Offset i pritisnite F1. Pod uvjetom da ste instalirali datoteku pomoći VBA, vidjet ćete temu pomoći za ključnu riječ Offset. Pomoć vam govori sintaksu izraza. Kaže da je pomak (RowOffset, ColumnOffset). Još uvijek nije vrlo jasno? Potražite zeleno podvučenu riječ "primjer" pri vrhu pomoći. Excelovi primjeri VBA omogućit će vam da naučite što se događa. U primjeru Offset, kaže se da biste aktivirali ćeliju dva retka ispod i tri reda desno od trenutne ćelije, koristili biste:

ActiveCell.Offset(3, 2).Activate

OK, to je trag. Funkcija pomaka način je kretanja po proračunskoj tablici Excel. S obzirom na taj dio informacija, nekako možete vidjeti što makronaredba radi. Prvo pomicanje (1, 0) je mjesto gdje smo pomaknuli stanični pokazivač dolje na A2. Sljedeći pomak je mjesto gdje smo se pomaknuli za jedan redak gore (-1 redak) i preko 1 stupca. Možda ništa drugo ne razumijete u makronaredbi, ali svejedno je korisno.

Vratite se na Excel radni list. Stavite pokazivač ćelije u ćeliju A5. Odaberite Alati> Makronaredba> Makronaredbe> Makronaredba1> Pokreni. Makronaredba se izvodi i vaša druga adresa je formatirana.

Možda kažete da je odabir cijelog ovog dugog velikog niza naredbi teže nego samo ručno formatiranje. U redu, a zatim napravite Alati> Makronaredbe> Makronaredbe> Opcije. U okviru prečaca recimo Ctrl + w je tipka prečaca za ovu makronaredbu. Kliknite U redu, a zatim odbacite dijalog Makronaredba s Odustani. Sada, kada pritisnete Ctrl w, makronaredba će se pokrenuti. Adresu možete oblikovati jednim pritiskom tipke.

Jeste li spremni za veliko vrijeme? Koliko adresa vam je ostalo? Pogodila sam Ctrl wa nekoliko puta, pa mi je ostalo 395. Vratite se na makronaredbu. Stavit ćemo cijeli makro kod u petlju. Umetnite novi redak koji kaže "Do Do Activecell.value =" "" prije prvog retka makronaredbe. Umetnite redak koji kaže "Loop" prije kraja Sub line. Petlja Do izvršit će sve između linije Do i Loop dok ne naiđe na prazan redak. Makronaredba sada izgleda ovako:

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

Vratite se na svoj Excel list. Stavite pokazivač ćelije na sljedeće ime. Pritisnite Ctrl w i makronaredba će formatirati sve vaše zapise u nekoliko sekundi.

Autori Excel knjiga kažu da snimanjem makronaredbe ne možete učiniti ništa korisno. Nije istina! Za osobu koja će morati izrezati i zalijepiti 800 puta, ova je makronaredba vrlo korisna. Za snimanje i prilagođavanje trebalo je nekoliko minuta. Da, profesionalni programeri istaknut će da je kod užasno neučinkovit. Excel tamo stavlja cijelu hrpu stvari koje tamo ne treba stavljati. Da, ako ste znali što radite, isti zadatak možete izvršiti s pola redaka koji će se izvoditi za 1,2 sekunde umjesto za 3 sekunde. PA ŠTO? 3 sekunde su daleko brže od 30 minuta koliko bi zadatak trebao.

Još nekoliko savjeta za početnike makro snimača:

  • Apostrof se koristi, ukazuje na komentar. VBA ignorira sve nakon apostrofa
  • Ovo je objektno orijentirano programiranje. Osnovna sintaksa je object.action. Ako bi objektno orijentirani sastavljač igrao nogomet, reklo bi se "ball.kick" da bi ga udario nogom. Dakle, "Selection.Cut" kaže da napravite "edit> cut" na trenutnom odabiru.
  • U gornjem primjeru, modifikatori raspona relativni su prema aktivnoj ćeliji. Ako je aktivna ćelija u B2 i kažete "ActiveCell.Range (" A1: C3 "). Odaberite", tada odabirete područje 3 stupca po 3 stupca počevši od ćelije B2. Drugim riječima, odabirete B2: D4. Izgovaranjem "ActiveCell.Range (" A1 ")" kaže se odabir raspona ćelija 1 x 1 počevši od aktivne ćelije. Ovo je nevjerojatno suvišno. To je ekvivalentno izgovaranju "ActiveCell.Select".
  • Spremite radnu knjigu prije prvog pokretanja makronaredbe. Na taj način, ako ima pogrešku i učini nešto neočekivano, možete zatvoriti bez spremanja i vratiti se na spremljenu verziju.

Nadamo se da će vam ovaj jednostavni primjer dati snimatelja makronaredbi početnika hrabrosti za snimanje jednostavne makronaredbe kad sljedeći put budete ponavljali zadatak u programu Excel.

Zanimljivi članci...