Įrašo modifikavimas Vykdyti „Excel“ makrokomandą - „Excel“ patarimai

Tai yra 19-asis savaitinis „Excel“ patarimas at.com. Daugelis „Excel“ patarimų apima tam tikrą makrokomandą. Šią savaitę „Excel“ vartotojams, niekada nerašiusiems makrokomandų, siūlau pagrindą, kaip įrašyti ir tada pritaikyti naudingą „Excel“ makrokomandą.

Adreso duomenų pavyzdys

Tarkime, kad turite 400 adresų duomenų eilių, panašių į rodomus viršutiniame paveiksle kairėje. Pavadinimo laukas yra A stulpelyje, gatvės adresas B stulpelyje ir miestas C stulpelyje.

Jūsų tikslas yra konvertuoti duomenis į vieną stulpelį, kaip parodyta antrame paveiksle.

Ši paprasta problema bus naudojama iliustruoti, kaip įrašyti, modifikuoti ir tada paleisti paprastą makrokomandą.

„Excel 95“ vartotojams: įrašiusi makrokomandą, „Excel“ įdės makrokomandą į darbaknygės lapą, vadinamą „Module1“. Galite tiesiog spustelėti lapą, kad pasiektumėte makrokomandą.

Nors šiame darbalapyje yra 400 įrašų, noriu įrašyti mažą dalį makrokomandos, kuri rūpinasi tik pirmuoju adresu. Makrokomanda darys prielaidą, kad langelio vadybininkas yra vardu. Ji įterps tris tuščias eilutes. Ji nukopijuos langelį, esantį originalios langelio dešinėje, į langelį, esantį po originalia ląstele. Jis nukopijuos miesto langelį į 2 langelių eilutes po pradine langeliu. Tada jis turėtų perkelti langelio žymeklį žemyn, kad jis būtų kitame pavadinime.

Svarbiausia yra apgalvoti šį procesą prieš jį įrašant. Įrašydami makrokomandą nenorite padaryti daug klaidų.

Taigi, įdėkite langelio rodyklę į langelį A1. Eikite į meniu ir pasirinkite Įrankiai> Makrokomanda> Įrašyti naują makrokomandą. Dialogo lange Įrašyti makrokomandą siūlomas „Macro1“ pavadinimas. Tai gerai, todėl paspauskite OK.

„Excel“ makrokomandoje yra vienas labai kvailas numatytasis nustatymas, kurį būtinai turite pakeisti, kad ši makrokomanda veiktų. „Excel 95“ eikite į Įrankiai> Makrokomanda> Naudokite santykines nuorodas „Excel 97-2003“ spustelėkite antrąją piktogramą įrankių juostoje „Sustabdyti įrašymą“. Piktograma atrodo kaip mažas darbalapis. Raudona ląstelė C3 rodo kitą raudoną ląstelę A3. Piktograma vadinama santykine nuoroda. Kai ši piktograma yra „įjungta“, ją supo spalva. Piktograma prisimena paskutinį dabartinės „Excel“ seanso nustatymą, todėl gali tekti spustelėti jį keletą kartų, kad išsiaiškintumėte, kuris metodas yra ar ne. „Excel 2007“ naudokite rodinį - makrokomandos - naudokite santykines nuorodas.

Gerai, mes pasirengę eiti. Atlikite šiuos veiksmus:

  • Vieną kartą paspauskite rodyklę žemyn, kad pereitumėte į langelį B1.
  • Laikykite nuspaudę „Shift“ klavišą ir dukart paspauskite rodyklę žemyn, kad pasirinktumėte 2, 3 ir 4 eilutes
  • Meniu pasirinkite Įterpti, tada pasirinkite Eilės, kad įterptumėte tris tuščias eilutes.
  • Paspauskite rodyklę aukštyn ir dešinę rodyklę, kad pereitumėte į B2 langelį.
  • Paspauskite „Ctrl X“, kad supjaustytumėte B2 langelį.
  • Paspauskite rodyklę žemyn, kairę rodyklę, tada „Ctrl V“, kad įklijuotumėte į langelį A2.
  • Paspauskite rodyklę aukštyn, rodyklę dešinėn, rodyklę dešinėn, „Ctrl X“, rodyklę kairėn, rodyklę kairėn, rodyklę žemyn, rodyklę žemyn, „Ctrl V“, kad pereitumėte nuo C1 iki A3.
  • Du kartus paspauskite rodyklę žemyn, kad langelio žymeklis dabar būtų kitame varde A5 eilutėje.
  • Norėdami sustabdyti makrokomandos įrašymą, įrankių juostoje spustelėkite piktogramą „Sustabdyti įrašymą“.

Na, jūs įrašėte savo pirmąjį makrokomandą. Pažiūrėkime. Eikite į Įrankiai> Makrokomanda> Makrokomandos. Sąraše pažymėkite „Macro1“ ir paspauskite mygtuką Redaguoti. Turėtumėte pamatyti tai, kas atrodo taip.

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

Ei, jei nesate programuotojas, tai tikriausiai atrodo gana bauginanti. Neleisk to būti. Jei yra kažkas, ko nesuprantate, yra puiki pagalba. Spustelėkite žymeklį kur nors raktiniame žodyje „Poslinkis“ ir paspauskite F1. Jei įdiegėte VBA pagalbos failą, pamatysite raktinio žodžio Offset pagalbos temą. Pagalba nurodo teiginio sintaksę. Joje sakoma, kad ji yra kompensuota („RowOffset“, „ColumnOffset“). Vis dar nelabai aišku? Netoli pagalbos viršaus ieškokite žaliai pabraukto žodžio „pavyzdys“. „Excel“ VBA pavyzdžiai leis sužinoti, kas vyksta. Offset pavyzdyje sakoma, kad suaktyvintumėte langelį dvi eilutes žemiau ir tris eilutes dešinėje nuo dabartinio langelio, kurį naudosite:

ActiveCell.Offset(3, 2).Activate

Gerai, taigi tai yra raktas. Poslinkio funkcija yra judėjimo „Excel“ skaičiuoklėje būdas. Atsižvelgdami į šią šiek tiek informacijos, galite tarsi pamatyti, ką daro makrokomanda. Pirmasis poslinkis (1, 0) yra tas, kur mes perkėlėme korektorių žemyn į A2. Kitas poslinkis yra tas, kur mes judėjome aukštyn viena eilute (-1 eilutė) ir virš 1 stulpelio. Makrokomandoje galite nieko nesuprasti, bet ji vis tiek yra naudinga.

Grįžkite į „Excel“ darbalapį. Įdėkite langelio žymeklį į langelį A5. Pasirinkite Įrankiai> Makrokomanda> Makrokomandos> Makrokomanda1> Vykdyti. Makrokomanda paleidžiama, o antrasis adresas yra suformatuotas.

Galbūt sakote, kad išsirinkti visą šią ilgą didelę komandų eilutę yra sunkiau, nei tik formuoti rankomis. Gerai, tada atlikite Įrankiai> Makrokomanda> Makrokomandos> Parinktys. Nuorodos laukelyje pasakykite, kad „Ctrl + w“ yra šios makrokomandos spartusis klavišas. Spustelėkite Gerai, tada atsisakykite makrokomandos dialogo lango su Atšaukti. Dabar, kai paspausite „Ctrl w“, makrokomanda bus paleista. Galite formatuoti adresą vienu klavišo paspaudimu.

Ar esate pasirengęs dideliam laikui? Kiek jūs turite adresų? Kelis kartus paspaudžiau „Ctrl wa“, taigi man liko 395. Grįžkite į makrokomandą. Mes sukursime visą makrokodą į kilpą. Prieš pirmąją makrokodo eilutę įterpkite naują eilutę, kurioje sakoma „Daryti iki activecell.value =" "". Prieš galinę antrinę eilutę įterpkite eilutę su užrašu „Loop“. „Do“ kilpa vykdys viską tarp „Do“ ir „Loop“ linijų, kol ji eis į tuščią eilutę. Makrokomanda dabar atrodo taip:

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

Grįžkite į „Excel“ lapą. Užveskite langelio žymeklį ant kito vardo. Paspauskite „Ctrl w“ ir makrokomanda suformatuos visus jūsų įrašus per kelias sekundes.

„Excel“ knygų autoriai sako, kad įrašydami makrokomandą nieko naudingo negalite padaryti. Netiesa! Asmeniui, kuris turėjo iškirpti ir įklijuoti 800 kartų, ši makrokomanda yra labai naudinga. Užtruko kelias minutes, kol įrašėme ir pritaikėme. Taip, profesionalūs programuotojai pažymės, kad kodas yra siaubingai neefektyvus. „Excel“ ten įdeda visą krūvą daiktų, kurių jai nereikia įdėti. Taip, jei žinojote, ką darote, galite tą pačią užduotį atlikti su pusėmis eilučių, kurios eis per 1,2, o ne per 3 sekundes. TAI KAS? 3 sekundės yra daug greitesnės nei 30 minučių, kurias būtų užtrukusi užduotis.

Keletas patarimų pradedantiems makrokomandas:

  • Naudojamas apostrofas nurodo komentarą. VBA neatsižvelgia į viską, kas yra po apostrofos
  • Tai objektinis programavimas. Pagrindinė sintaksė yra object.action. Jei objektu orientuotas kompiliatorius žaisdavo futbolą, norėdamas spardyti kamuolį, jis sakydavo „ball.kick“. Taigi „Selection.Cut“ sako, kad reikia atlikti dabartinį pasirinkimą „edit> cut“.
  • Aukščiau pateiktame pavyzdyje diapazono modifikatoriai yra susiję su aktyvia ląstele. Jei aktyvi ląstelė yra B2 ir sakote „ActiveCell.Range („ A1: C3 “). Pasirinkite“, tada pasirenkate 3 eilutes po 3 stulpelių sritį, pradedant nuo langelio B2. Kitaip tariant, pasirenkate B2: D4. Sakant „ActiveCell.Range („ A1 “)“, sakoma, kad reikia pasirinkti 1 x 1 langelių diapazoną, pradedant aktyvia ląstele. Tai nepaprastai nereikalinga. Tai tolygu sakant „ActiveCell.Select“.
  • Prieš pirmą kartą vykdydami makrokomandą, išsaugokite darbaknygę. Tokiu būdu, jei jame yra klaida ir padaroma kažkas netikėto, galite uždaryti neišsaugoję ir grįžti į išsaugotą versiją.

Tikimės, kad šis paprastas pavyzdys suteiks jums pradedantiesiems makrokomandoms drąsos įrašyti paprastą makrokomandą, kai kitą kartą turėsite pasikartojančią užduotį atlikti „Excel“.

Įdomios straipsniai...