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


