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.

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
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
Izvršenje gornjeg koda daje sljedeći rezultat
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


