când lucrați cu VBA în Excel, este posibil să aveți nevoie să împărțiți un șir în diferite părți pe baza unui delimitator.de exemplu, dacă aveți o adresă, puteți utiliza funcția VBA Split pentru a obține diferite părți ale adresei care sunt separate printr-o virgulă (care ar fi delimitatorul în acest caz).
SPLIT este o funcție șir încorporat în Excel VBA pe care le puteți utiliza pentru a împărți un șir de text bazat pe delimitator.,
Acest Tutorial se Referă la:
Excel VBA Funcția SPLIT – Sintaxa
Split ( Expression, , , )
- Expresia: Acesta este șirul pe care doriți să împartă pe baza delimitator. De exemplu, în cazul exemplului de adresă, întreaga adresă ar fi „expresia”. În cazul în care acest lucru este un șir de lungime zero („”) funcția SPLIT ar reveni un tablou gol.
- Delimitator: acesta este un argument opțional. Acesta este delimitatorul care este folosit pentru a împărți argumentul „expresiei”., În cazul exemplului nostru de adresă, o virgulă este un delimitator care este utilizat pentru a împărți adresa în diferite părți. Dacă nu specificați acest argument, un caracter spațiu este considerat delimitatorul implicit. În cazul în care dați un șir de lungime zero („”), întregul șir de „Expresie” este returnat de funcție.
- limită: acesta este un argument opțional. Aici specificați numărul total de substringuri pe care doriți să le returnați. De exemplu, dacă doriți doar să returnați primele trei substringuri din argumentul „Expression”, acesta ar fi 3., Dacă nu specificați acest argument, valoarea implicită este -1, care returnează toate substringurile.
- comparați: acesta este un argument opțional. Aici specificați tipul de comparație pe care doriți ca funcția SPLIT să o efectueze la evaluarea substringurilor. Următoarele opțiuni sunt disponibile:
- când comparația este 0: Aceasta este o comparație binară. Aceasta înseamnă că, dacă delimitatorul dvs. este un șir de text (să zicem ABC), atunci acesta ar fi sensibil la litere mari și mici. „ABC” nu ar fi egal cu „abc”.
- când comparați este 1: Aceasta este o comparație de Text., Aceasta înseamnă că, dacă delimitatorul dvs. este un șir de text (să zicem ABC), atunci chiar dacă aveți ” abc „în șirul „Expresie”, acesta ar fi considerat un delimitator.acum, că am acoperit elementele de bază ale funcției SPLIT, să vedem câteva exemple practice.
Exemplul 1 – împărțiți cuvintele într-o propoziție
Să presupunem că am textul – „vulpea maro rapidă sare peste câinele leneș”.
pot folosi funcția SPLIT pentru a obține fiecare cuvânt din această propoziție într-un element separat într-o matrice.,
codul de mai jos ar fi:
Sub SplitWords()Dim TextStrng As StringDim Result() As StringTextStrng = "The Quick Brown Fox Jumps Over The Lazy Dog"Result() = Split(TextStrng)End Sub
în timp ce codul nu face nimic util, vă va ajuta să înțelegeți ce face funcția Split în VBA.funcția Split împarte șirul de text și atribuie fiecare cuvânt matricei de rezultate.
Deci, în acest caz:
- rezultat(0) stochează valoarea „the”
- rezultat(1) stochează valoarea „rapid”
- Rezultat(2) stochează valoarea „maro” și așa mai departe.
în acest exemplu, am specificat doar primul argument – care este textul care trebuie împărțit., Deoarece nu a fost specificat niciun delimitator, este nevoie de caracter spațiu ca delimitator implicit.
Notă importantă:
- funcția VBA SPLIT returnează o matrice care pornește de la baza 0.
- când rezultatul funcției SPLIT este atribuit unui tablou, acel tablou trebuie declarat ca tip de date String. Dacă îl declarați ca tip de date variantă, acesta va afișa o eroare de nepotrivire de tip). În exemplul de mai sus, rețineți că am declarat Result() ca tip de date String.,
Exemplul 2 – numărați numărul de cuvinte dintr-o propoziție
puteți utiliza funcția SPLIT pentru a obține numărul total de cuvinte dintr-o propoziție. Trucul aici este să numărați numărul de elemente din matrice pe care le obțineți atunci când împărțiți textul.
codul De mai jos va afișa o casetă de mesaj cu numărul de cuvinte:
Sub WordCount()Dim TextStrng As StringDim WordCount As IntegerDim Result() As StringTextStrng = "The Quick Brown Fox Jumps Over The Lazy Dog"Result = Split(TextStrng)WordCount = UBound(Result()) + 1MsgBox "The Word Count is " & WordCountEnd Sub
În acest caz, funcția UBound ne spune limită superioară de matrice (de exemplu, numărul maxim de elemente din matrice are)., Deoarece baza matricei este 0, se adaugă 1 pentru a obține numărul total de cuvinte.
puteți utiliza un cod similar pentru a crea o funcție personalizată în VBA care va lua textul ca intrare și va returna numărul de cuvinte.
codul de mai jos va crea această funcție:
odată creat, puteți utiliza funcția WordCount la fel ca orice altă funcție obișnuită.
această funcție se ocupă, de asemenea, de conducere, la sfârșit și spații duble între cuvinte. Acest lucru a fost posibil prin utilizarea funcției TRIM în codul VBA.,în cazul în care doriți să aflați mai multe despre cum funcționează această formulă pentru a număra numărul de cuvinte dintr-o propoziție sau doriți să aflați despre o formulă non-VBA mod de a obține numărul de cuvinte, consultați acest tutorial.
Exemplul 3-Folosind un alt Delimitator decât caracterul spațial
În cele două exemple anterioare, am folosit un singur argument în funcția SPLIT, iar restul au fost argumentele implicite.când utilizați un alt delimitator, trebuie să specificați acest lucru în formula divizată.,
în codul de mai jos, funcția SPLIT returnează un tablou bazat pe o virgulă ca delimitator și apoi arată un mesaj cu fiecare cuvânt într-o linie separată.
În codul de mai sus, am folosit Pentru Următoarea buclă pentru a merge prin fiecare element de „Rezultat” matrice se atribuie la ‘DisplayText’ variabil.
Exemplul 4-împărțiți o adresă în trei părți
cu funcția SPLIT, puteți specifica câte numere de împărțire doriți să obțineți. De exemplu, dacă nu specific nimic, fiecare instanță a delimitatorului ar fi folosită pentru a împărți șirul.,
dar dacă specific 3 ca limită, atunci șirul va fi împărțit numai în trei părți.de exemplu, dacă am următoarea adresă:
2703 Winifred Way, Indianapolis, Indiana, 46204
pot folosi funcția Split în VBA pentru a împărți această adresă în trei părți.
împarte primele două pe baza delimitatorului de virgule, iar partea rămasă devine al treilea element al tabloului.,
codul De mai jos va arăta adresa în trei linii diferite într-o casetă de mesaj:
Una dintre utilizările practice de acest lucru ar putea fi atunci când doriți să împartă o singură linie adresa în formatul prezentat în caseta de mesaj. Apoi puteți crea o funcție personalizată care returnează adresa împărțită în trei părți (cu fiecare parte într-o linie nouă).
următorul cod ar face acest lucru:
odată ce aveți acest cod în modul, puteți utiliza funcția (ThreePartAddress) în registrul de lucru la fel ca orice altă funcție Excel.,
această funcție are un argument – referința celulei care are adresa.rețineți că pentru ca adresa rezultată să apară în trei linii diferite, trebuie să aplicați formatul de text wrap pe celule (se află în fila Acasă din grupul de aliniere). Dacă formatul „Wrap Text” nu este activat, veți vedea întreaga adresă ca o singură linie.
exemplul 5-obțineți numele orașului de la adresa
cu funcția Split în VBA, puteți specifica ce parte a matricei rezultate doriți să utilizați.,
De exemplu, să presupunem că eu sunt divizare în următoarele adrese pe baza virgula ca delimitator:
2703 Winifred Way, Indianapolis, Indiana, 46204
array ar arăta ca mai jos:
{"2703 Winifred Way", "Indianapolis", "Indiana", "46204"}
Deoarece aceasta este o matrice, pot alege pentru a afișa sau a reveni o anumită parte din această matrice.
mai jos este un cod pentru o funcție personalizată, unde puteți specifica un număr și va returna acel element din matrice. De exemplu, dacă vreau numele de stat, pot specifica 3 (deoarece este al treilea element din matrice).,
funcția de mai sus are două argumente, referința celulei care are adresa și numărul elementului pe care doriți să îl returnați. Funcția Split împarte elementele de adresă și o atribuie variabilei rezultat.
apoi returnează numărul elementului pe care l-ați specificat ca al doilea argument. Rețineți că, deoarece baza este 0, Elementulnumărul-1 este utilizat pentru a returna partea corectă a adresei.
această formulă personalizată este cea mai potrivită atunci când aveți un format consistent în toate adresele – adică, orașul este întotdeauna menționat după cele două virgule., Dacă datele nu sunt consecvente, nu veți obține rezultatul dorit.în cazul în care doriți numele orașului, puteți utiliza 2 ca al doilea argument. În cazul în care utilizați un număr care este mai mare decât numărul total de elemente, acesta va returna valoarea#! eroare.
puteți simplifica și mai mult Codul așa cum se arată mai jos:
în codul de mai sus, în loc să utilizați variabila rezultat, returnează doar numărul elementului specificat.deci, dacă ați împărțit („Bună dimineața”) (0), ar reveni doar primul element, care este”bun”.,în mod similar, în codul de mai sus, returnează doar numărul elementului specificat.
s – ar putea să vă placă și următoarele tutoriale Excel:
- funcția Excel VBA InStr-explicată cu exemple.
- cum să sortați datele în Excel utilizând VBA (un ghid pas cu pas).
- 7 Lucruri uimitoare Excel Text la coloane pot face pentru tine.
- cum se obține numărul de cuvinte în Excel.
- funcția VBA TRIM.