při práci s VBA v Excelu můžete mít potřebu rozdělit řetězec na různé části na základě oddělovače.
například pokud máte adresu, můžete pomocí funkce VBA Split získat různé části adresy, které jsou odděleny čárkou (což by v tomto případě bylo oddělovačem).
SPLIT je vestavěná funkce řetězce v Excelu VBA, kterou můžete použít k rozdělení textového řetězce na základě oddělovače.,
Tento Výukový program Zahrnuje:
Excel VBA ROZDĚLIT Funkce – Syntaxe
Split ( Expression, , , )
- Vyjádření: je To řetězec, který chcete rozdělit na základě oddělovače. Například v případě příkladu adresy by celá adresa byla „výrazem“. V případě, že se jedná o řetězec s nulovou délkou ( „“ ), funkce SPLIT vrátí prázdné pole.
- oddělovač: toto je volitelný argument. Toto je oddělovač, který se používá k rozdělení argumentu „výraz“., V případě našeho příkladu adresy je čárka oddělovač, který se používá k rozdělení adresy na různé části. Pokud tento argument neuvedete,znak mezery se považuje za výchozí oddělovač. V případě, že zadáte řetězec s nulovou délkou ( „“), vrátí se celý řetězec „Expression“ funkcí.
- Limit: jedná se o volitelný argument. Zde zadáte celkový počet podřetězců, které chcete vrátit. Například, pokud chcete vrátit pouze první tři podřetězce z argumentu „výraz“, bylo by to 3., Pokud tento argument nezadáte, výchozí je -1, který vrátí všechny podřetězy.
- porovnat: jedná se o volitelný argument. Zde zadáte typ srovnání, které chcete funkci rozdělit provést při hodnocení podřetězců. K dispozici jsou následující možnosti:
- při porovnání je 0: Jedná se o binární srovnání. To znamená, že pokud je oddělovač textový řetězec (řekněme ABC), pak by to bylo citlivé na velká a velká písmena. „ABC“ by se rovnalo „abc“.
- při porovnání je 1: Toto je srovnání textu., To znamená, že pokud je vaším oddělovačem textový řetězec (řekněme ABC), pak i když máte v řetězci „výraz „““ abc, bude to považováno za oddělovač.
nyní, když jsme se zabývali základy rozdělené funkce, podívejme se na několik praktických příkladů.
Příklad 1-rozdělte slova ve větě
Předpokládejme, že mám text – „Rychlá hnědá liška skočí přes líného psa“.
funkci SPLIT mohu použít k tomu, aby se každé slovo této věty dostalo jako samostatná položka v poli.,
pod kód by na toto:
Sub SplitWords()Dim TextStrng As StringDim Result() As StringTextStrng = "The Quick Brown Fox Jumps Over The Lazy Dog"Result() = Split(TextStrng)End Sub
Zatímco kód nedělá nic užitečné, to vám pomůže pochopit, co Rozdělení funkcí ve VBA.funkce
Split rozdělí textový řetězec a přiřadí každé slovo výsledkovému poli.
v tomto případě
- Výsledek(0) ukládá hodnotu „V“
- Výsledek(1) ukládá hodnotu „Rychlý“
- Výsledek(2) ukládá hodnotu „Hnědé“ a tak dále.
v tomto příkladu jsme zadali pouze první argument-což je text, který má být rozdělen., Protože nebyl zadán žádný oddělovač, vyžaduje jako výchozí oddělovač prostorový znak.
Důležitá poznámka:
- VBA SPLIT funkce vrací pole, které začíná od základny 0.
- když je výsledek rozdělené funkce přiřazen k poli, musí být toto pole deklarováno jako datový typ řetězce. Pokud jej prohlásíte za datový typ varianty, zobrazí se chyba nesouladu typu). Ve výše uvedeném příkladu si všimněte, že jsem deklaroval výsledek () jako datový typ řetězce.,
Příklad 2 – Spočítat Počet Slov ve Větě
ROZDĚLIT lze použít funkci získat celkový počet slov ve větě. Trik je zde spočítat počet prvků v poli, které získáte při rozdělení textu.
pod kód by se zobrazit okno zprávy s počet slov:
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
V tomto případě, UBound nám říká, horní mez matice (tj. maximální počet prvků pole)., Vzhledem k tomu, že základna pole je 0, přidá se 1, aby se získal celkový počet slov.
podobný kód můžete použít k vytvoření vlastní funkce ve VBA, která vezme text jako vstup a vrátí počet slov.
níže uvedený kód vytvoří tuto funkci:
po vytvoření můžete použít funkci WordCount stejně jako jakoukoli jinou pravidelnou funkci.
tato funkce také zpracovává přední, koncové a dvojité mezery mezi slovy. To bylo možné pomocí funkce TRIM v kódu VBA.,
V případě, že se chcete dozvědět více o tom, jak tento vzorec funguje spočítat počet slov ve větě, nebo se chcete dozvědět o non-VBA vzorce způsob, jak dostat slovo počítat, podívejte se na tento návod.
Příklad 3 – Použití Oddělovač Jiný než Znak mezery
V předchozích dvou příkladech jsme použili jen jeden argument v SPLIT funkce, a zbytek byly výchozí argumenty.
Když používáte nějaký jiný oddělovač, musíte to zadat ve vzorci rozdělení.,
v níže uvedeném kódu vrátí funkce SPLIT pole založené na čárce jako oddělovač a poté zobrazí zprávu s každým slovem v samostatném řádku.
Ve výše uvedeném kódu, použil jsem Pro Další smyčka jít přes každý prvek „Výsledek“ pole přiřadit k ‚DisplayText‘ proměnná.
příklad 4-rozdělte adresu na tři části
pomocí funkce SPLIT můžete určit, kolik čísel rozdělení chcete získat. Například, pokud nebudu nic specifikovat, každá instance oddělovače by byla použita k rozdělení řetězce.,
ale pokud zadám 3 jako limit, řetězec bude rozdělen pouze na tři části.
například pokud mám následující adresu:
2703 Winifred Way, Indianapolis, Indiana, 46204
Mohu použít funkci rozdělení ve VBA k rozdělení této adresy na tři části.
rozdělí první dva na základě oddělovače čárky a zbývající část se stane třetím prvkem pole.,
pod kód by se zobrazit adresu na tři různé řádky v okně se zprávou:
Jedním z praktických využití tohoto by mohlo být, když chcete rozdělit jeden řádek adresy do formátu, zobrazí v okně zprávy. Poté můžete vytvořit vlastní funkci, která vrátí adresu rozdělenou do tří částí (s každou částí v novém řádku).
následující kód by to udělal:
jakmile máte tento kód v modulu, můžete použít funkci (ThreePartAddress) v sešitu stejně jako každá jiná funkce Excel.,
tato funkce má jeden argument-odkaz na buňku, který má adresu.
Všimněte si, že pro výsledná adresa se objeví v tři různé linky, je třeba použít obtékání textu formát buňky (je to v kartě Domů ve skupině). Pokud formát „Wrap Text“ není povolen, uvidíte celou adresu jako jeden řádek.
příklad 5-Získejte název města z adresy
s funkcí Split ve VBA, můžete určit, jakou část výsledného pole chcete použít.,
například, předpokládejme, že jsem rozdělení následující adresy založené na čárku jako oddělovač:
2703 Winifred Way, Indianapolis, Indiana, 46204
výsledné pole by vypadat podobně jako je zobrazeno níže:
{"2703 Winifred Way", "Indianapolis", "Indiana", "46204"}
Protože to je pole, si mohu vybrat k zobrazení nebo vrácení určité části tohoto pole.
níže je Kód pro vlastní funkci, kde můžete zadat číslo a vrátí tento prvek z pole. Například, pokud chci název státu, mohu zadat 3 (protože je to třetí prvek v poli).,
výše uvedená funkce má dva argumenty, odkaz na buňku, který má adresu a číslo prvku, které chcete vrátit. Rozdělená funkce rozdělí adresní prvky a přiřadí je proměnné výsledku.
pak vrátí číslo prvku, které jste zadali jako druhý argument. Všimněte si, že vzhledem k tomu, že základna je 0, Prvekčíslo-1 se používá k vrácení správné části adresy.
v případě, že chcete název města, můžete použít 2 jako druhý argument. V případě, že použijete číslo, které je vyšší než celkový počet prvků,vrátí hodnotu#! chyba.
kód můžete dále zjednodušit, jak je uvedeno níže:
ve výše uvedeném kódu, namísto použití proměnné výsledku vrátí pouze zadané číslo prvku.
takže pokud jste se rozdělili („Dobré ráno“) (0), vrátí se pouze první prvek, který je“dobrý“.,
podobně ve výše uvedeném kódu vrátí pouze zadané číslo prvku.
může se vám také líbit následující Excel tutoriály:
- Excel VBA InStr funkce-vysvětleno příklady.
- jak třídit Data v Excelu pomocí VBA (průvodce krok za krokem).
- 7 úžasných věcí, které Excel Text do sloupců může udělat pro vás.
- Jak získat počet slov v aplikaci Excel.
- funkce oříznutí VBA.