Jak získat počet slov v aplikaci Excel (pomocí jednoduchých vzorců)

Chcete získat počet slov v aplikaci Excel? Věřte tomu nebo ne, Excel nemá vestavěný čítač slov.

Ale nebojte se.

Skvělá spousta funkcí Excelu (nebo trochu VBA, pokud máte chuť) to za vás snadno udělá.

V tomto tutoriálu ukážu několik způsobů, jak počítat slova v aplikaci Excel pomocí jednoduchých vzorců. A na konci se bude také zabývat technikou vytvoření vlastního vzorce pomocí VBA, který vám rychle poskytne počet slov pro jakýkoli text v jakékoli buňce.

Vzorec pro získání počtu slov v aplikaci Excel

Než vám poskytnu přesný vzorec, pojďme si rychle přiblížit logiku, abychom získali počet slov.

Předpokládejme, že mám níže uvedenou větu, pro kterou chci zjistit počet slov.

Přestože aplikace Excel nemůže počítat počet slov, může počítat počet mezer ve větě.

Abychom získali počet slov, můžeme místo slov spočítat tyto mezery a přičíst 1 k celkovému počtu (protože počet mezer by byl o jeden menší než počet slov).

Nyní mohou existovat dvě možnosti:

  1. Mezi každým slovem je jediná mezera
  2. Mezi slovy je více mezer.

Pojďme se tedy podívat, jak v každém případě spočítat celkový počet slov.

Příklad 1 - Pokud je mezi slovy jediná mezera

Řekněme, že v buňce A1 mám následující text: Pusťte kočku z tašky

Pro spočítání počtu slov bych použil vzorec:

= LEN (A1) -LEN (SUBSTITUTE (A1, "", ""))+1

V důsledku toho se vrátí „7“.

Tento vzorec funguje takto:

  • LEN (A1) - Tato část vzorce vrací 26, což je celkový počet znaků v textu v buňce A1. Obsahuje textové znaky i mezery.
  • SUBSTITUTE (A1, ”“, ””) - Tato část vzorce odstraní z textu všechny mezery. Výsledek by tedy v tomto případě byl Nechte to na autě.
  • LEN (NÁHRADA (A1, ”“,“”) - Tato část vzorce počítá celkový počet znaků v textu, který neobsahuje mezery. Výsledkem by tedy bylo 20.
  • LEN (A1) -LEN (NÁHRADA (A1, ”“,“”)) - To by odečetlo délku textu bez mezer od délky textu s mezerami. Ve výše uvedeném příkladu by to bylo 26-20, což je 6.
  • = LEN (A1) -LEN (NÁHRADA (A1, ”“,“”))+1 - K celkovému výsledku přidáme 1, protože celkový počet mezer je o jeden menší než celkový počet slov. Například ve dvou slovech je jedna mezera a ve třech slovech dvě mezery.

Nyní to funguje dobře, pokud máte mezi slovy pouze jeden znak mezery. Ale nefungovalo by to, kdybyste měli mezi slovy více než jednu mezeru.

V takovém případě použijte vzorec v následujícím příkladu.

Příklad 2: Když je mezi slovy více mezer

Řekněme, že máte následující text: Pusťte kočku z tašky

V tomto případě je mezi slovy více mezer.

Abychom získali počet slov, musíme nejprve odstranit všechny mezery (tak, aby mezi dvěma slovy byla pouze jedna mezera) a poté spočítat celkový počet mezer.

Zde je vzorec, který nám poskytne správný počet slov:

= LEN (TRIM (A1))-LEN (SUBSTITUTE (A1, "", ""))+1

Jedná se o podobný vzorec použitý ve výše uvedeném příkladu, s mírnou změnou - zde jsme také použili funkci TRIM.

Funkce Excel TRIM odstraní všechny úvodní, koncové a nadbytečné mezery (kromě mezer mezi slovy).

Zbytek vzorce funguje stejně (jak je vysvětleno v příkladu 1).

Poznámka: Pokud mezi slovy nejsou mezery, považuje se za jedno slovo.

Použití vlastní funkce VBA k počítání slov v aplikaci Excel

Přestože výše uvedené vzorce fungují skvěle, pokud potřebujete často počítat počet slov, můžete pomocí VBA vytvořit vlastní funkci (nazývanou také funkce definovaná uživatelem).

Výhodou použití vlastní funkce je, že ji můžete vytvořit jednou a poté ji použít jako jakoukoli jinou běžnou funkci aplikace Excel. Takže místo toho, abyste vytvořili dlouhý složitý vzorec, jako jsme to udělali ve dvou výše uvedených příkladech, máte jednoduchý vzorec, který vezme odkaz na buňku a okamžitě vám poskytne počet slov.

Zde je kód, který vytvoří tuto vlastní funkci pro získání počtu slov v aplikaci Excel.

Funkce WordCount (CellRef As Range) Dim TextStrng As String Dim Result () As String Result = Split (WorksheetFunction.Trim (CellRef.Text), "") WordCount = UBound (Result ()) + 1 End Function

Po vytvoření můžete funkci WordCount používat stejně jako jakoukoli jinou běžnou funkci Excelu.

Ve výše uvedeném kódu pro vlastní funkci jsem použil funkci TRIM listu k odstranění všech úvodních, koncových a dvojitých mezer mezi slovy. Tím je zajištěno, že všechny tři buňky poskytnou stejný výsledek, protože se počítají pouze slova, nikoli dvojité mezery.

Jak tento vzorec funguje:

Výše uvedený kód VBA nejprve pomocí funkce TRIM odstraní z textového řetězce v odkazované buňce všechny úvodní, koncové a dvojité mezery.

Jakmile má vyčištěný řetězec, použije funkci SPLIT ve VBA k rozdělení textového řetězce na základě oddělovače, který jsme zadali jako znak mezery. Každé slovo je tedy odděleno uloženo jako samostatná položka v proměnné Výsledek.

Poté pomocí funkce UBOUND spočítáme celkový počet položek, které byly uloženy v proměnných Result. Protože VBA má základnu 0, potřebujeme přidat 1, abychom získali celkový počet slov.

To znamená, že Result (0) ukládá první slovo, Result (1) ukládá druhé slovo atd. Protože toto počítání začíná od 0, musíme přidat 1, abychom získali skutečný počet slov.

Kam tento kód vložit?

Při vytváření vlastní funkce je třeba vložit kód do VB editoru sešitu (což je zadní konec sešitu, kde můžete psát kód pro automatizaci úloh a vytváření vlastních funkcí).

Níže jsou uvedeny kroky pro vložení kódu pro funkci „GetNumeric“ do sešitu.

  1. Přejděte na kartu Vývojář.
  2. Klikněte na možnost Visual Basic. Tím se otevře editor VB v backendu.
  3. V podokně Průzkumník projektů v editoru VB klikněte pravým tlačítkem na libovolný objekt sešitu, do kterého chcete vložit kód. Pokud Průzkumníka nevidíte, přejděte na kartu Zobrazit a klikněte na Průzkumník projektů.
  4. Přejděte na Vložit a klikněte na Modul. Tím se vloží objekt modulu pro váš sešit.
  5. Zkopírujte a vložte kód do okna modulu.

Jakmile zkopírujete kód do okna kódu, můžete se vrátit zpět na list a použít tuto funkci stejně jako všechny ostatní běžné funkce aplikace Excel.

Stačí napsat = Slovo a ukáže vám vzorec v seznamu.

Vyžaduje jeden argument, kterým je odkaz na buňku, a okamžitě vám v něm poskytne počet slov.

wave wave wave wave wave