Funkcije za manipulaciju nizovima VBA & Operaulagatelji

⚡ Pametni sažetak

VBA funkcije za manipulaciju stringovima i Operatori kombiniraju, mjere i iskažutract tekst unutar Excel makronaredbi. Ova stranica objašnjava operator spajanja, funkcije Left, Right, Mid, Len i InStr, dijeljenje i spajanje te pogreške koje najčešće prekidaju kod stringa.

  • 🔤 Podaci niza: Vrijednost izgrađena od znakova, simbola i brojeva, kao što je tekst srpanj-2015.
  • ➕ povezan u lanac Operator: Ampersand spaja dva niza znakova, pa "John" i "Doe" vraćaju John Doe.
  • ✂️ ExtracFunkcije: Lijevo, desno i sredina povlače podniz s početka, kraja ili sredine vrijednosti.
  • 📏 Mjerne funkcije: Len broji znakove, a InStr vraća poziciju gdje počinje podniz.
  • 🧩 Podijeli i spoji: Split razdvaja jedan razgraničeni niz u niz, a Join ponovno izgrađuje niz u jedan niz.
  • ⚠️ Uobičajene pogreške: Neusklađenost tipova, InStr koji vraća nulu i razmaci na kraju uzrokuju većinu neuspjelih usporedbi.

VBA funkcije za manipulaciju stringovima i Operaulagatelji

VBA niz Operaulagatelji

Podaci niza koriste se za držanje podataka koji se sastoje od brojeva, znakova i simbola. "Jul-2015" je primjer niza podataka. Sastoji se od

  • Likovi (srpanj)
  • Simbol (-)
  • Numbers (2015)

String operatori se koriste za manipuliranje string podacima. Na primjer, možete spojiti vrijednost srpnja 2015. od prva 3 slova mjeseca i godine kao što je "srpanj 2015".

Sljedeća tablica prikazuje VBA operator niza za ulančavanje.

S / N Operahumka Description Primjer Izlaz
1 & Ulančavanje: Ovaj se operator koristi za ulančavanje nizova “John” & “Doe” prosječan čovjek

Primjer Izvor Code

VBA niz OperaPrimjer izvora Code

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

Izvršenje gornjeg koda daje sljedeći rezultat

VBA niz OperaPrimjer izvora Code

Znak & nije jedini simbol koji se pojavljuje za spajanje teksta, a razlika između njih je bitna kada su u pitanju brojevi.

Razlika između & i + za spajanje stringova

VBA prihvaća i ampersand i znak plus između dvije tekstualne vrijednosti, pa ih početnici često tretiraju kao zamjenjive. Ponašaju se drugačije čim je jedan operand broj ili prazna vrijednost, a samo je jedan od njih siguran.

ponašanje & (ampersand) + (plus)
Dvije tekstualne vrijednosti Pridružuje im se: „Guru" i "99" vraća Guru99 Pridružuje im se: „Guru" + "99" vraća Guru99
Tekst i broj Pretvara broj u tekst: „Dob“ i 30 vraća Dob 30 Izaziva grešku neusklađenosti tipova
Dva numerička niza "10" i "5" vraća 105 "10" + "5" može se zbrojiti i vratiti 15
Null vrijednost Tretira Null kao prazan niz Vraća Null i odbacuje cijeli rezultat

💡 Savjet: Uvijek koristite ampersand za spajanje, a znak plus rezervirajte za aritmetičke operacijeStavite razmak prije i poslije znaka &, jer VBA čita Total& kao deklaracijski znak tipa Long.

VBA funkcije za manipulaciju nizovima

VBA manipulacija nizovima važan je element u Excel VBA za programiranje makronaredbi i string operacije. Excel nudi razne vrste funkcija VBA manipulacije nizovima kao što su:

  • Lijevo: koristi se za extract znakova s ​​lijeve strane niza
  • Desna: koristi se za extract znakova s ​​desne strane niza
  • Srednji: koristi se za extracpodniz iz sredine niza
  • Len: koristi se za pronalaženje duljine niza
  • InStr: koristi se za pronalaženje položaja podniza u nizu
  • Podrezati: koristi se za uklanjanje razmaka s oba kraja niza
  • zamijeniti: koristi se za zamjenu svake pojave jednog podniza s drugim
  • UCase / LCase: koriste se za pretvaranje niza u velika ili mala slova

Donja tablica prikazuje sintaksu svake funkcije s razrađenim primjerom, tako da uzorak možete izravno kopirati u makro.

funkcija Sintaksa Primjer Izlaz
Lijevo Lijevo(niz, duljina) Lijevo („srpanj 2015.“, 3) srpnja
Desna Desno(niz, duljina) Desno(“srpanj 2015.”, 4) 2015
Srednji Sredina(niz, početak, duljina) Sredina(“srpanj-2015”, 5, 4) 2015
Len Len(niz) Len („srpanj 2015.“) 8
InStr InStr(početak, niz, podniz) InStr(1, “Jul-2015”, “-“) 4
Podrezati Trim(niz) Obrezivanje(" Guru99“) Guru99
zamijeniti Zamijeni(niz, pronađi, zamijeni) Zamijeni (“srpanj-2015”, “-”, “/”) Srpnja / 2015
UCase UCase(niz) UCase(“guru99”) GURU99

Makro u nastavku kombinira nekoliko ovih funkcija kako bi ponovno izgradio oznaku datuma od njezinih dijelova.

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

Pokretanje makronaredbe prikazuje srpanj 2015. Svaka funkcija vraća novu vrijednost i ostavlja izvorni niz netaknutim, zbog čega se rezultati mogu sigurno kombinirati u jednom izrazu.

Sve ove funkcije rade s jednim nizom znakova istovremeno. Kada jedna vrijednost sadrži cijelu listu, dvije druge funkcije to bolje obrađuju.

Kako razdvojiti i spojiti nizove znakova u VBA-i

Podaci zalijepljeni u Excel često dolaze kao jedna duga vrijednost s razdjelnikom između svake stavke, kao što je „Pepsi, Coca-Cola, Fanta, Sok“. Čitanje toga s Mid i InStr je sporo i osjetljivo. VBA pruža odgovarajući par funkcija upravo za taj posao.

Split uzima razgraničeni niz i vraća niz baziran na nuli, s jednim elementom po stavci. Pridružite se radi obrnuto, uzima niz i vraća jedan niz s razdjelnikom između elemenata. Imajte na umu da Join radi na nizu, a ne na dva odvojena niza.

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

Petlja zapisuje svako piće u zaseban redak radnog lista, a okvir s porukom zatim prikazuje Pepsi | Coca-Cola | Fanta | Sok. Tri točke čine ovaj uzorak pouzdanim u produkcijskom kodu:

  • Rezultat zasnovan na nuli: Split uvijek vraća niz numeriran od 0, bez obzira na vrijednost postavljenu na Option Base, stoga petlju pokreni s LBound i UBound umjesto fiksnog broja.
  • Deklariraj kao String(): Rezultat dodijelite dinamičkom nizu stringova. Deklarisanje fiksne veličine prvo uzrokuje grešku pri kompajliranju.
  • Prazan unos: Razdvajanje praznog niza vraća niz bez elemenata, stoga testirajte s UBoundom prije čitanja Items(0).

Čak i s ispravno odabranom funkcijom, string kod ne uspijeva na nekoliko predvidljivih načina.

Uobičajene VBA pogreške u nizovima znakova i kako ih ispraviti

Većina grešaka u nizovima znakova u Excel VBA dolazi iz kratkog popisa uzroka. Prepoznavanje simptoma štedi dugu sesiju otklanjanja pogrešaka.

  • Neslaganje tipova prilikom spajanja: Između teksta i broja korišten je znak plus. Zamijenite ga znakom &, koji automatski pretvara broj.
  • InStr vraća 0: Podniz nije pronađen. InStr vraća 0 umjesto -1 u slučaju neuspjeha, stoga provjerite vrijednost veću od nule prije nego što rezultat proslijedite Mid-u.
  • Nevažeći poziv procedure u sredini ili lijevo: Tražena duljina je negativna ili je početna pozicija ispod 1. Zaštitite poziv s Len tako da duljina nikada ne prelazi niz.
  • Usporedbe koje bi se trebale podudarati, ali se ne podudaraju: Razmaci na kraju uvezenih podataka prekidaju jednakost. Obje strane se prelome u Trim i koristi StrComp kada se velika i mala slova trebaju zanemariti.
  • Tekst koji neće postati broj: Vrijednost poput "1,200" ne uspijeva u aritmetici zbog separatora. Uklonite je s naredbom Replace prije pretvorbe s CLng.

Preuzmite Excel koji sadrži gornji kod

Preuzmite gornji Excel Code

Pitanja i odgovori

Niz znakova promjenjive duljine može sadržavati do otprilike dvije milijarde znakova, a niz znakova fiksne duljine do 65 400. Međutim, ćelija radnog lista pohranjuje samo 32 767 znakova, pa se dulje vrijednosti skraćuju prilikom zapisivanja na list.

Znak jednakosti ih prema zadanim postavkama uspoređuje osjetljivo na velika i mala slova. Za rezultat koji nije osjetljiv na velika i mala slova koristite StrComp(a, b, vbTextCompare) ili postavite Option Compare Text na vrh modula da biste promijenili zadanu vrijednost za cijeli modul.

Znak & pretvara svaki operand u tekst prije spajanja, pa 10 i 5 vraća niz 105. Vrijednosti neka budu numeričke i prvo ih zbrojite, a zatim spojite rezultat ako se treba pojaviti unutar poruke.

Da. Opišite ulaz i željeni izlaz, na primjer npr.tracUpišite kod prije prve crtice, a AI asistent vraća izraz Left i InStr. Testirajte ga u odnosu na rubne slučajeve kao što je nedostajuća crtica.

Da. Zalijepite ugniježđeni izraz kao što je Mid s InStr unutar njega i AI asistent ga razbija u korake, imenuje svaki argument i označava slučaj u kojem InStr vraća nulu i poziv ne uspijeva.

Sažmite ovu objavu uz: