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: