Kuinka käydä läpi Excel-laskentataulukkosi VBA: lla

Joskus on hyödyllistä lukea laskentataulukko rivi riviltä ja ottaa siitä valikoivasti tietoja. Alla oleva esimerkki näyttää, kuinka tämä tehdään.

Artikkelissa oletetaan, että lukijalla on kehittäjänauha ja että hän tuntee VBA-editorin. Jos ei, ota Googlen “Excel Developer -välilehti” tai “Excel Code Window”.

Seuraava esimerkki käsittelee tietoja tutkimalla jokaisen sähköpostiosoitteen rivin ja yhdistämällä ne yhdeksi osoiteriville. Vaikka Excelissä on sisäänrakennetut Transpose-toiminnot, aiomme koodimme avulla sulkea pois tietyt vastaanottajat ja lisätä erottimia.

Hakemuksemme tarvitsee vain yhden arkin. Kopioi alla olevat tiedot soluun A1:

Sähköpostiosoite
tcruise@paramount.com
julia.R@disney.com
Jules.dassin@gaumont.co.fr
EnricoFellini@cinecitta.co.it
marymontrary@bedlam.org.uk

Aseta painike lomakkeelle käynnistääksesi koodin.Aseta painike lomakkeelle koodin käynnistämiseksi

Oletetaan, että tällaisia ​​sähköposteja on satoja viiden sijaan; haluamme lähettää jokaiselle saman viestin ja saman kopion käsikirjoituksestamme. Tähän on useita tapoja, joista merkittävin on kutsua sähköpostiohjelmaa, kuten Outlookia, VBA-koodista. Tällä harjoituksella on kuitenkin kaksi tarkoitusta:

  • Näytä kuinka selata laskentataulukkoa helposti;
  • Korosta Excelin kykyä tarkastella jokaista riviä ja toimia sen mukaan.

VBA-koodi

VBA-koodi yhdistää kaikki osoitteet lisäämällä puolipisteen jokaisen perään, jotta ne voidaan liittää yhdellä kertaa sähköpostin vastaanottajakenttään. Huomaat koodista, että rivit tutkittuasi se jättää ranskalaiset pois.

Aseta moduuli ja kirjoita seuraava:

Option Explicit
Dim strEmail As String
Dim strAll As String

Sub Main()
    strAll = ""
    Range("C2") = strAll     'clear previous program results
    Sheets("Sheet1").Select
    Range("A2").Select
    Do While ActiveCell > ""      'loop until row 7
        strEmail = ActiveCell
        If Right(strEmail, 2) <> "fr" Then      'exclude France
            strAll = strAll & strEmail & ";"
        End If
        Range("A" & ActiveCell.Row + 1).Select     'move on a row in the SAME column
    Loop
    Range("C2") = strAll
End Sub

Koodi säilyttää aktiivisen solun sarakkeessa A, vain rivit siirtyvät eteenpäin. Jos haluat viitata tietoihin muualla peräkkäin, käytämme:

Variable = Activecell.offset(offset rows, offset columns)

Esimerkiksi, jos haluat saada arvon aktiivisen rivin sarakkeesta B, koodi lukisi Activecell.offset(0, 1). Jos haluat saada A2:n arvon, kun olemme A3:ssa, lukisin Activecell.offset(-1, 0).

Testaa koodia määrittämällä painike makrolle "Main".

Jotkut Internet-palveluntarjoajat saattavat rajoittaa kerralla lähetettävien sähköpostien määrää roskapostin estämiseksi. Jos käytät tätä menetelmää, on luultavasti parasta tarkistaa heiltä ennen satojen sähköpostien lähettämistä kerralla.

Excel-tiedostojen korruption käsittely

Excel-tiedostojen korruptioAika ajoin kohtaamme työkirjojen vioittumista siinä määrin, ettei Excel itse pysty palauttamaan niitä. Tämä on katastrofi useimmille Excelin käyttäjille, myös asiantuntijoille. Jos sinulla on kuitenkin käytettävissäsi tehokas palautustyökalu, voit palauttaa vahingoittuneet xlsx-tiedostot helposti ja nopeasti.

Tekijän esittely:

Felix Hooker on tietojen palauttamisen asiantuntija DataNumen, Inc., joka on maailman johtava tietojen palautustekniikoissa, mukaan lukien korjaus rar korruptio ja sql-palautusohjelmistotuotteet. Lisätietoja osoitteessa www.datanumen.com

Kommenttien lisääminen on estetty.