VBA-merkkijonojen manipulointitoiminnot ja OperaTors

⚡ Älykäs yhteenveto

VBA-merkkijonojen manipulointifunktiot ja Operatekijät yhdistävät, mittaavat ja testaavattract-teksti Excel-makrojen sisällä. Tällä sivulla selitetään ketjutusoperaattori, Left-, Right-, Mid-, Len- ja InStr-funktiot, merkkijonojen jakaminen ja yhdistäminen sekä useimmin merkkijonokoodia rikkovat virheet.

  • 🔤 Merkkijonotiedot: Merkeistä, symboleista ja numeroista muodostettu arvo, kuten teksti Heinäkuu 2015.
  • ➕ ketju Operator: Et-merkki yhdistää kaksi merkkijonoa, joten ”Matti ” ja ”Mehiläinen” palauttavat merkinnän Matti Mehiläinen.
  • ✂️ Extraction Toiminnot: Left, Right ja Mid hakevat osamerkkijonon arvon alusta, lopusta tai keskeltä.
  • 📏 Mittaustoiminnot: Len laskee merkit ja InStr palauttaa osan merkkijonon alkukohdan.
  • 🧩 Jaa ja yhdistä: Split jakaa yhden erotinmerkeillä erotetun merkkijonon taulukoksi ja Join rakentaa taulukon uudelleen yhdeksi merkkijonoksi.
  • ⚠️ Yleisiä virheitä: Tyyppiristiriita, InStr-funktion palauttama nolla ja lopussa olevat välilyönnit aiheuttavat useimmat epäonnistuneet vertailut.

VBA-merkkijonojen manipulointifunktiot ja OperaTors

VBA merkkijono OperaTors

Merkkijonotietoja käytetään säilyttämään tietoja, jotka koostuvat numeroista, merkeistä ja symboleista. "Heinä-2015" on esimerkki merkkijonodatasta. Se koostuu

  • Hahmot (heinäkuu)
  • Symboli (-)
  • Numbers (2015)

Merkkijonooperaattoreita käytetään merkkijonotietojen käsittelyyn. Voit esimerkiksi yhdistää heinäkuun 2015 arvon kuukauden ja vuoden 3 ensimmäisestä kirjaimesta, kuten "heinäkuu-2015".

Seuraavassa taulukossa näkyy ketjutuksen VBA-merkkijonooperaattori.

S / N OperaTor Tuotetiedot esimerkki ulostulo
1 & Liitä: Tätä operaattoria käytetään merkkijonojen ketjuttamiseen "John" ja "Doe" Matti Meikäläinen

Esimerkkilähde Code

VBA merkkijono Operaesimerkkilähteestä Code

MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"

Yllä olevan koodin suorittaminen tuottaa seuraavan tuloksen

VBA merkkijono Operaesimerkkilähteestä Code

Et-merkki ei ole ainoa symboli, joka näyttää yhdistävän tekstiä, ja niiden välinen ero on tärkeä, kun mukana on numeroita.

Ero merkkijonojen ketjutuksessa merkkijonojen & ja + välillä

VBA hyväksyy sekä et-merkin että plusmerkin kahden tekstiarvon välissä, joten aloittelijat usein pitävät niitä keskenään vaihdettavina. Ne toimivat eri tavalla heti, kun toinen operandi on numero tai tyhjä arvo, ja vain toinen niistä on turvallinen.

Käyttäytyminen & (E-merkki) + (Plus)
Kaksi tekstiarvoa Liittyy heihin: "Guru” ja “99” palauttaa Guru99 Liittyy heihin: "Guru” + “99” palauttaa Guru99
Teksti ja numero Muuntaa luvun tekstiksi: ”Ikä ” ja 30 palauttaa iän 30 Aiheuttaa tyypin epäsuhta -virheen
Kaksi numeromerkkijonoa ”10” ja ”5” palauttavat 105 ”10” + ”5” voi lisätä ja palauttaa arvon 15
Null-arvo Käsittelee Null-arvoa tyhjänä merkkijonona Palauttaa null-arvon ja hylkää koko tuloksen

💡 Vinkki: Käytä aina et-merkkiä ketjutuksessa ja varaa plusmerkki aritmeettinen toimintaLisää välilyönti et-merkin et-merkin eteen ja sen jälkeen, koska VBA lukee Total&-merkin kirjoittamisen Long-tyyppisenä deklarointimerkkinä.

VBA-merkkijonojen manipulointitoiminnot

VBA-merkkijonojen manipulointi on tärkeä elementti Excel VBA makroohjelmointiin ja merkkijonooperaatiot. Excel tarjoaa erilaisia ​​VBA-merkkijonojen manipulointitoimintoja, kuten:

  • Vasenkäytetään esim.tract merkkiä merkkijonon vasemmalta puolelta
  • Oikeakäytetään esim.tract merkkiä merkkijonon oikealta puolelta
  • keski-käytetään esim.tracta osamerkkijono merkkijonon keskeltä
  • Len: käytetään merkkijonon pituuden määrittämiseen
  • InStr: käytetään etsimään alimerkkijonon sijainti merkkijonossa
  • Trimmata: käytetään poistamaan välilyöntejä merkkijonon molemmista päistä
  • korvata: käytetään vaihtamaan jokaisen alimerkkijonon esiintymän toiseen
  • UCase / LCase: käytetään merkkijonon muuntamiseen isoksi tai pieneksi kirjaimeksi

Alla oleva taulukko näyttää kunkin funktion syntaksin toimivan esimerkin kera, joten voit kopioida kuvion suoraan makroon.

Toiminto Syntaksi esimerkki ulostulo
Vasen Left(merkkijono, pituus) Vasen (”heinäkuu 2015”, 3) heinäkuu
Oikea Oikea(merkkijono, pituus) Oikea ("heinäkuu 2015", 4) 2015
keski- Mid(merkkijono, alku, pituus) Puolivälissä (”heinäkuu 2015”, 5, 4) 2015
Len Pituus (merkkijono) Len ("heinäkuu 2015") 8
InStr InStr(alku, merkkijono, alimerkkijono) InStr(1, "heinäkuu-2015", "-") 4
Trimmata Leikkaa(merkkijono) Leikata(" Guru99 tuumaa) Guru99
korvata Korvaa(merkkijono, etsi, korvaa) Korvaa ("Heinä-2015", "-", "/") heinäkuuta/2015
UCase UCase(merkkijono) UCase("guru99") GURU99

Alla oleva makro yhdistää useita näistä funktioista päivämäärätunnisteen uudelleenrakentamiseksi sen osista.

Sub StringFunctionsDemo()
    Dim Source As String
    Dim MonthPart As String
    Dim YearPart As String

    Source = "July-2015"

    ' Take the first three characters
    MonthPart = Left(Source, 3)
    ' Take the last four characters
    YearPart = Right(Source, 4)

    MsgBox MonthPart & "-" & YearPart, vbOKOnly, "String Functions"
End Sub

Makron suorittaminen näyttää heinäkuun 2015. Jokainen funktio palauttaa uuden arvon ja jättää alkuperäisen merkkijonon koskemattomaksi, minkä vuoksi tulokset voidaan yhdistää turvallisesti yhteen lausekkeeseen.

Nämä funktiot käsittelevät kerrallaan yhtä merkkijonoa. Kun yksi arvo sisältää koko listan, kaksi muuta funktiota käsittelevät sen paremmin.

Merkkijonojen jakaminen ja yhdistäminen VBA:ssa

Exceliin liitetyt tiedot saapuvat usein yhtenä pitkänä arvona, jossa on erotinmerkki kohtien välissä, kuten ”Pepsi, Coca-Cola, Fanta, Mehu”. Tämän lukeminen Mid- ja InStr-muuttujalla on hidasta ja haurasta. VBA tarjoaa juuri tähän tehtävään sopivan funktioparin.

Jakaa ottaa erotellun merkkijonon ja palauttaa nollapohjaisen taulukon, jossa on yksi elementti kohdetta kohden. Liity tekee päinvastoin, eli ottaa taulukon ja palauttaa yhden merkkijonon, jonka elementtien välissä on erotinmerkki. Huomaa, että Join toimii taulukon, ei kahden erillisen merkkijonon kanssa.

Sub SplitAndJoinDemo()
    Dim Source As String
    Dim Items() As String
    Dim i As Long

    Source = "Pepsi,Coke,Fanta,Juice"

    ' Break the value into an array on every comma
    Items = Split(Source, ",")

    For i = LBound(Items) To UBound(Items)
        Sheet1.Cells(i + 1, 1).Value = Items(i)
    Next i

    ' Rebuild the list with a different separator
    MsgBox Join(Items, " | "), vbOKOnly, "Joined List"
End Sub

Silmukka kirjoittaa jokaisen juoman omalle laskentataulukon rivilleen, ja viestiruutu näyttää sitten Pepsi | Coca-Cola | Fanta | Mehu. Kolme asiaa tekevät tästä mallista luotettavan tuotantokoodissa:

  • Nollapohjainen tulos: Split palauttaa aina taulukon, joka on numeroitu nollasta alkaen, riippumatta siitä, mikä Option Base on asetettu arvoon, joten ohjaa silmukkaa LBound- ja UBound-muuttujalla kiinteän luvun sijaan.
  • Ilmoita merkkijonona(): Sijoita tulos dynaamiseen merkkijonotaulukkoon. Kiinteän koon määrittäminen ensin aiheuttaa käännösvirheen.
  • Tyhjä syöte: Tyhjän merkkijonon jakaminen palauttaa elementtittömän taulukon, joten testaa UBoundilla ennen Items(0):n lukemista.

Vaikka oikea funktio olisi valittu, merkkijonokoodi epäonnistuu muutamalla ennustettavalla tavalla.

Yleisiä VBA-merkkijonovirheitä ja niiden korjaaminen

Useimmat Excel VBA:n merkkijonovirheet johtuvat lyhyestä luettelosta syitä. Oireen tunnistaminen säästää pitkän virheenkorjausistunnon.

  • Tyyppiristiriita ketjutuksessa: Tekstin ja numeron välissä käytettiin plusmerkkiä. Korvaa se et-merkillä, joka muuntaa numeron automaattisesti.
  • InStr palauttaa arvon 0: Osamerkkijonoa ei löytynyt. InStr palauttaa virhetilanteessa arvon 0 eikä -1, joten testaa, onko arvo suurempi kuin nolla ennen tuloksen välittämistä Midille.
  • Virheellinen proseduurikutsu keski- tai vasemmalla puolella: Pyydetty pituus on negatiivinen tai aloituskohta on alle 1. Suojaa kutsu Len-muuttujalla, jotta pituus ei koskaan ylitä merkkijonoa.
  • Vertailukohdat, joiden pitäisi täsmätä, mutta jotka eivät täsmää: Tuodun datan lopussa olevat välilyönnit rikkovat tasa-arvon. Rivitä molemmat puolet Trim-funktiossa ja käytä StrComp-funktiota, kun kirjainkokoa ei haluta huomioida.
  • Teksti, josta ei tule numeroa: Arvo, kuten ”1 200”, epäonnistuu aritmeettisesti erottimen vuoksi. Poista se Replace-komennolla ennen muuntamista CLng-komennolla.

Lataa Excel, joka sisältää yllä olevan koodin

Lataa yllä oleva Excel-tiedosto Code

UKK

Muuttuvan pituinen merkkijono voi sisältää noin kaksi miljardia merkkiä ja kiinteän pituinen merkkijono enintään 65 400 merkkiä. Laskentataulukon soluun mahtuu kuitenkin vain 32 767 merkkiä, joten pidemmät arvot katkaistaan ​​taulukkoon kirjoitettaessa.

Yhtäsuuruusmerkki vertaa niitä oletusarvoisesti kirjainkoon mukaan. Käytä StrComp(a, b, vbTextCompare) saadaksesi tuloksen, joka ei ole kirjainkoon suhteen erotteleva, tai sijoita Option Compare Text moduulin yläosaan muuttaaksesi koko moduulin oletusarvoa.

Et-merkki muuntaa jokaisen operandin tekstiksi ennen yhdistämistä, joten 10 ja 5 palauttavat merkkijonon 105. Pidä arvot numeerisina ja laske ne ensin yhteen, ja yhdistä sitten tulos, jos sen on näytettävä viestissä.

Kyllä. Kuvaile syöte ja haluttu tuotos, esimerkiksitract koodi ennen ensimmäistä viivaa, ja tekoälyavustaja palauttaa Left- ja InStr-lausekkeet. Testaa sitä reunatapausten, kuten puuttuvan viivan, varalta.

Kyllä. Liitä sisäkkäinen lauseke, kuten Mid, jonka sisällä on InStr, ja tekoälyavustaja jakaa sen vaiheisiin, nimeää jokaisen argumentin ja merkitsee tapauksen, jossa InStr palauttaa nollan ja kutsu epäonnistuu.

Tiivistä tämä viesti seuraavasti: