Jak extrahovat pouze čísla z buněk aplikace Excel (7 snadných způsobů)

  • Sdílet Toto
Hugh West

Ačkoli společnost Microsoft neposkytla přímý vzorec nebo syntaxi pro extrahovat pouze čísla z buňky aplikace Excel, můžeme do ní zahrnout širokou škálu. Vzorce aplikace Excel vytvořit jedinou funkci, kterou lze použít pro extrakci pouze čísel nebo číslic z buněk Excelu. V tomto článku se pokusíme ukázat a podrobně vysvětlit, jak můžeme z buněk pomocí vhodných vzorců vyvést pouze čísla podle několika kritérií.

Stáhnout cvičebnici

Stáhněte si zdarma cvičnou knihu, kterou jsme použili při přípravě tohoto článku. Do vybraných buněk můžete zadávat textové hodnoty s čísly a okamžitě zjistit výsledky pomocí vložených vzorců.

Extrakce čísel z buněk.xlsm

7 efektivních způsobů extrakce pouze čísel z buněk aplikace Excel

K dispozici bude jeden kód VBA, jedna funkce Excelu a pět praktických vzorců, které vám pomohou extrahovat čísla z buňky. Stejně jako na obrázku níže máme některé kódy obsahující číslice a písmena, kde jsou číslice přítomny na začátku. Musíme extrahovat pouze tyto číslice nebo čísla.

1. Vytažení čísel ze začátku textu

V této první metodě budeme kombinovat LEVÝ , SUM , LEN a SUBSTITUTE funkce pro vytažení čísel ze začátku textového řetězce. Nejprve zadáme tento vzorec do buňky a poté pomocí rukojeť pro plnění , zkopírujeme tento vzorec do ostatních buněk.

Kroky:

  • Nejprve zadejte vzorec do buňky C5 .

=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0","1","2","3","4","5","6","7","8","9"},""))))

  • Za druhé, stiskněte Vstupte na a získáte číslo 34 pro první kód.

  • Za třetí, použijte Plnicí rukojeť pak automaticky vyplnit všechny ostatní buňky ve sloupci C .

🔎 Rozdělení vzorců

SUBSTITUTE(B5,{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"},"")

  • Zde se SUBSTITUTE najde postupně číslice (0-9), a pokud je najde, nahradí je v buňce. B5 s prázdným znakem. Funkce se tedy vrátí jako {"34DTXRF", "34DTXRF", "34DTXRF", "4DTXRF", "3DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF"}.

LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},""))

  • Na stránkách LEN určuje počet znaků v řetězci. Zde tedy funkce LEN funkce spočítá všechny znaky, které se v textech jednotlivě nacházejí, pomocí funkce SUBSTITUTE Výsledné hodnoty budou v našem případě - {7,7,7,6,6,7,7,7,7,7,7,7}.

LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"")))

  • Tato část je odečtením od počtu znaků v buňce B5 ke všem ostatním počtům znaků zjištěným jednotlivě v předchozí části vzorce. Zde tedy budou výsledné hodnoty - {0,0,0,1,1,0,0,0,0,0,0}.

SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"")))

  • Na stránkách SUM funkce pak jednoduše sečte všechny nalezené odečtené hodnoty & výsledek bude zde, 2 (0+0+0+1+1+0+0+0+0+0).

=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"},""))))

  • A nyní přichází poslední část, ve které se LEVÝ funkce vrátí hodnoty s přesným počtem znaků zleva zjištěných v předchozí části vzorce. Protože jsme získali hodnotu součtu 2, funkce LEVÝ funkce zde vrátí pouze 34 z textu 34DTXRF .

Související: Jak oddělit čísla v aplikaci Excel pomocí vzorce (5 způsobů)

2. Extrakce čísel z pravé strany textu

V této části budeme extrahovat čísla nebo číslice z pravé strany textového řetězce. Použijeme příkaz PRAVÁ , MIN a HLEDAT funkce zde.

Kroky:

  • Začněme tím, že v našem datovém souboru musíme do buňky C5 je-

=RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789") +1)

  • Poté stiskněte tlačítko Vstupte na a pak použijte Plnicí rukojeť pro automatické vyplnění zbytku buněk.

🔎 Rozdělení vzorců

B5& "0123456789

  • V tomto případě spojujeme hodnoty ve skupině B5 buňka s 0123456789 pomocí ampersand (&) mezi nimi a dostaneme výslednou hodnotu DTXRF340123456789.

SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″)

  • Nyní je HLEDAT funkce vyhledá postupně všechny číslice (0-9) ve výsledné hodnotě získané v předchozí části a vrátí pozice těchto 10 číslic ve znacích v položce DTXRF340123456789 Zde tedy budou naše výsledné hodnoty následující: {8,9,10,6,7,13,14,15,16,17}.

MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″))

  • Na stránkách MIN Funkce se používá k nalezení nejnižší číslice nebo čísla v poli. Zde tedy bude minimální nebo nejnižší hodnota- 6 z pole {8,9,10,6,7,13,14,15,16,17} nalezeného v předchozí části vzorce.

LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″) +1))

  • Nyní je počet znaků v B5 bude nalezen pomocí LEN Funkce pak odečte hodnotu 6(zjištěnou v minulé části) a vrátí výsledek přičtením 1. Zde v našem případě bude výsledná hodnota činit 2 (7-6+1) .

RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″) +1)

  • Na stránkách PRAVÁ vrátí zadaný počet znaků z poslední nebo pravé strany řetězce. Po výsledku zjištěném postupem odečítání v předchozí části se zde použije funkce PRAVÁ zobrazí poslední 2 znaky z buňky B5 a to bude 34 .

Přečtěte si více: Jak oddělit čísla v jedné buňce v aplikaci Excel (5 metod)

3. Extrakce čísel z libovolné části textového řetězce

Nyní je zde široké řešení pro všechny případy. Tato metoda vytáhne čísla nebo číslice z libovolné pozice v textovém řetězci. Navíc použijeme příkaz TEXTJOIN , IFERROR , INDIREKTNÍ , MID a ROW funkce v této metodě.

Kroky:

  • Nejprve zadejte vzorec do cílové buňky takto.

=TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),""))

  • Pokud používáte Excel 2016 nebo vyšší verzi a stiskněte Vstupte na , jinak stiskněte Ctrl+Shift+Enter pro získání výsledku tohoto vzorce pole.
  • Po tomto kroku automaticky vyplňte další buňky pomocí příkazu Plnicí rukojeť a je hotovo.

🔎 Rozdělení vzorců

INDIRECT("1:"&LEN(B5))

  • Na stránkách INDIREKTNÍ se používá k uložení pole hodnot buněk jako referenčního textu. Zde se používá znak ampersand. (&) příkaz spojí délku znaků buňky B5 s neúplnou syntaxí rozsahu (1:) .
  • Takže zde INDIREKTNÍ funkce uloží všechna čísla v rozsahu od 1 do délky znaků v buňce B5 jako referenční text.

ROW(INDIRECT("1:"&LEN(B5)))

  • Na stránkách ROW funkce obvykle udává číslo řádku buňky. Ale zde v příkazu INDIREKTNÍ funkce, protože nebyla uvedena žádná referenční buňka, v tomto případě je to ROW vyčte všechny hodnoty nebo čísla z referenčních textů uložených v souboru INDIREKTNÍ funkce.
  • Nyní pro 1. buňku B5 , výsledné hodnoty prostřednictvím těchto ROW a INDIREKTNÍ funkce budou- {1;2;3;4;5;6;7;8;9}.

(MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)))

  • Na stránkách MID vám umožní určit znaky uprostřed textového řetězce, pokud je zadána počáteční pozice & délka.
  • Pro všech 9 pozic uvedených v předchozím oddíle je tedy v tomto případě MID Funkce nyní zobrazí všechny znaky jeden po druhém pro každou pozici & vrátí tedy hodnoty jako {"1"; "9";" "; "D"; "D"; "X"; "2"; "M"; "N"}.

IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),"")

  • Nyní je IFERROR je logická funkce, která určí, zda je řetězec číslo nebo něco jiného. Pokud neidentifikuje řetězec s čísly nebo číslicemi, pak vrátí hodnotu s definovaným textovým příkazem.
  • V našem případě budou všechny hodnoty nalezené v poslední sekci vynásobeny 1, a pokud jsou výsledky vráceny jako chyby hodnot pro písmena nebo textové hodnoty, které nelze vynásobit, jejich IFERROR Funkce převede chyby na prázdné řetězce. Naše výsledné hodnoty tedy budou- {1;9;"";"";"";"";"";2;"";""}.

=TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),""))

  • A nyní se provede závěrečná část prostřednictvím příkazu TEXTJOIN Tato funkce slouží ke spojení dvou řetězců se zadaným oddělovačem.
  • Výsledné hodnoty, které jsme zjistili v předcházející části, se nyní spojí dohromady spolu s touto hodnotou TEXTJOIN A tak získáme číslo 192.

Přečtěte si více: Jak extrahovat více čísel z řetězce v aplikaci Excel (6 metod)

4. Vnoření více funkcí pro vynášení pouze čísel

Nyní si ukážeme další vzorec, který z buňky Excelu vytáhne pouze čísla z libovolné pozice. Ačkoli se může zdát poměrně složitý, celý vzorec rozebereme a pokusíme se snadno vysvětlit všechny kompaktní funkce. Navíc použijeme funkci IF , VELKÝ , INDEX , SUMPRODUCT a ISNUMBER funkce v tomto vzorci.

  • Začněte tím, že do buňky zadáte tento vzorec C5 . Musíte nahradit odkaz na buňku pouze na základě vlastní buňky v tabulce a poté vložením tohoto vzorce získáte ihned očekávaný výsledek. A tento vzorec funguje dokonale v jakékoli verzi aplikace Excel.

=IF(SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&B5, LARGE(INDEX(ISNUMBER(--MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))* ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1) * 10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"")

  • Poté musíte stisknout Vstupte na až po zadání celého vzorce a je hotovo.

🔎 Rozdělení vzorců

Než začneme s rozdělením tohoto masivního & amp; kompaktního vzorce, můžeme jej rozdělit na několik částí, jako je-

=IF(A>0, SUMPRODUCT(B 1 *C 1 , B 2 *C 2 , ..........B n C n ),"")

Tato syntaxe znamená, že pokud A je větší než 0, pak všechny součinů B n a C n sečtou do konečného výsledku. A pokud se A není větší než 0, pak se výsledek vrátí jako prázdná nebo prázdná buňka.

  • A = SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, ""
  • B = MID(0&B5, LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))* ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1))
  • C = 10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),""

Rozdělení části A = SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, "".

SUBSTITUTE(B5, {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, "")

  • Na stránkách SUBSTITUTE funkce najde v textu postupně všechny číslice (0-9). 19 DDX2MN a nahradí tyto číslice prázdným řetězcem na pozicích číslic.
  • Výsledné hodnoty v poli tedy budou - {"19 DDX2MN", "9 DDX2MN", "19 DDXMN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "1 DDX2MN"}.

LEN(SUBSTITUTE(B5, {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, ""))

  • Na stránkách LEN Funkce nyní spočítá počet znaků ve všech řetězcových hodnotách získaných z předchozí části. Tato funkce tedy vrátí jako- {9,8,8,9,9,9,9,9,9,9,9,8}.

LEN(B5)-LEN(SUBSTITUTE(B5, {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, ""))

  • V této části vzorce je nyní v buňce několik znaků. B5 odečte všechna čísla nalezená v předchozí části. Výsledné hodnoty pak budou- {0,1,1,0,0,0,0,0,0,0,1}.

SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, "")))

  • S pomocí SUM Hodnoty uvnitř pole nalezené v poslední části se sečtou do 3 (0+1+1+0+0+0+0+0+0+0+1).
  • Takže podle první části našeho vzorce, A>0 (3>0) . Nyní přejdeme k další části rozdělení.

Rozdělení části B = MID(0&B5, LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))* ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1))

INDIRECT("$1:$"&LEN(B5))

  • Na stránkách INDIREKTNÍ funkce zde uloží řetězcové hodnoty jako odkaz na pole. Uvnitř závorky je znak ampersand. (&) spojí počet znaků nalezených v buňce B5 se syntaxí "Range of cells". To znamená, že od 1 do počtu definovaných znaků bude každý z nich uložen jako odkaz na pole.

ROW(INDIRECT("$1:$"&LEN(B5)))

  • Nyní je to ROW vytáhne všechna čísla z pole a výsledné hodnoty pro buňku B5 bude- {1;2;3;4;5;6;7;8;9}.

MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1)

  • V této části vzorce se MID vyjádří všechny znaky z buňky B5 na základě všech pozic nalezených jako čísla v předchozí části. Takže extrahované hodnoty budou nalezeny po této části - {"1"; "9";" "; "D"; "D"; "X"; "2"; "M"; "N"}.

ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1)))

  • Jako ISNUMBER je logická funkce, která jednotlivě určí, zda hodnoty nalezené v předchozí části jsou číselné řetězce, nebo ne. Pokud ano, pak vrátí jako TRUE , jinak se zobrazí jako FALSE .
  • V našem případě tedy bude výsledek {TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}.

INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))*ROW(INDIRECT("$1:$"&LEN(B5)))),0)

  • Pokud si všimnete, že uvnitř výše uvedené funkce je dvojitý znak, tzv. Dvojité unární , se používá k převodu všech logických hodnot na číselné řetězce. 1(TRUE) nebo 0(FALSE) . Nyní INDEX funkce vrátí tento výsledek jako {1;1;0;0;0;0;0;1;0;0}.
  • Poté se výsledné hodnoty vynásobí hodnotami získanými ze souboru ROW a výsledkem bude {1;2;0;0;0;0;0;0;7;0;0}.

LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))*ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))

  • Na stránkách VELKÝ funkce nyní přeskupí největší hodnoty z pole podle pozic na základě čísel nalezených v položce ROW & naše výsledné hodnoty pro tuto část vzorce budou- {7;2;1;0;0;0;0;0;0;0;0;0}.

MID(0&B5, LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))*ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1))

  • Nyní tato část funkce spojí 0 s texty v buňce B5 . Pak se přidá 1 jednotlivě se všemi čísly nalezenými v poslední části a zobrazte znaky z B5 buňky na základě zadaných číselných pozic.
  • Výsledkem této části tedy bude - {"2"; "9"; "1"; "0"; "0"; "0"; "0"; "0"; "0"; "0"}.

Rozdělení části C = (10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"")

  • Tato část určí mocniny 10 & uložte je do pole. Číslice mocnin jsou čísla zjištěná z pole ROW funkce dříve.
  • Tato část vzorce vrátí hodnoty jako {1;10;100;1000;10000;100000;1000000;10000000;100000000}.

Násobení B n a C n

  • Nyní se uvnitř pole vynásobí výsledné hodnoty z posledních dvou hlavních rozkladů B a C. Součin zjištěný z násobení pak bude - {2;90;100;0;0;0;0;0;0;0}.
  • A nakonec SUMPRODUCT funkce sečte tyto hodnoty nalezené v poli. Takže náš konečný výsledek bude následující 192 (2+90+100+0+0+0+0+0+0) , což jsou čísla získaná z buňky B5 .

Přečtěte si více: Jak oddělit text a čísla v aplikaci Excel (4 snadné způsoby)

5. Extrakce pětimístných čísel z řetězce

K extrakci pětimístných čísel z libovolné části řetězce v Excelu použijeme jiný vzorec. Použijeme vzorec CONCAT a SEQUENCE V této části jsme poprvé použili funkce. Navíc jsme pro tuto metodu mírně změnili náš soubor dat.

Kroky:

  • Nejprve vyberte rozsah buněk C5:C12 .
  • Zadejte následující vzorec.

=CONCAT(IFERROR(0+MID(B5,SEQUENCE(LEN(B5)),1),""))

  • Nakonec stiskněte Ctrl+Enter .

🔎 Rozdělení vzorců

  • LEN(B5)
    • Výstup: 11 .
    • Tato funkce vrací délku řetězce.
  • SEQUENCE(11)
    • Output: {1;2;3;4;5;6;7;8;9;10;11} .
    • Tato funkce vrací prvních jedenáct čísel.
  • MID(B5,{1;2;3;4;5;6;7;8;9;10;11},1)
    • Výstup: {"1"; "9";" "; "D"; "D"; "X"; "2"; "M"; "N"; "3"; "3″} .
    • Pomocí této části získáváme jednotlivé znaky z řetězce.
  • 0+{"1"; "9";" "; "D"; "D"; "X"; "2"; "M"; "N"; "3"; "3″}
    • Výstup: {1;9;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;2;#VALUE!;#VALUE!;#VALUE!;3;3} .
    • Pokud k řetězci přičteme nulu, vrátí se chyba.
  • IFERROR({1;9;#HODNOTA!;#HODNOTA!;#HODNOTA!;#HODNOTA!;2;#HODNOTA!;#HODNOTA!;3;3},"")
    • Výstup: {1;9;"";"";"";"";"";2;"";"";3;3} .
    • Všechny chybové hodnoty jsou prázdné.
  • CONCAT({1;9;"";"";"";"";"";2;"";"";3;3})
    • Výstup: 19233 .
    • Nakonec sečteme všechny hodnoty a získáme pouze pětimístná čísla.

6. Použití bleskové výplně k extrakci čísel v rámci rozsahu

Používání stránek na Blesková výplň Funkce je jednodušší a jednodušší než jakákoli jiná výše uvedená metoda. Budeme extrahovat čísla z libovolné pozice v textových řetězcích. Abychom tuto metodu provedli správně, musíme Excelu pomoci najít vzor hodnot buněk ve sloupci nebo řádku tím, že provedeme extrakci pouze pro první dvě hodnoty.

Kroky:

  • Na začátku zadejte čísla ručně do buňky C5 .

  • Pak začněte psát čísla z buňky B6 do buňky C6 a Excel automaticky rozpozná vzor.
  • Nakonec stiskněte Vstupte na .

Poznámky: Tato metoda má určité nevýhody, a proto se nedoporučuje pro všechny případy, kdy potřebujete extrahovat čísla z textových řetězců. Blesková výplň se obvykle řídí vzorem z buněk ve sloupci nebo rozsahu. Takže první 2 nebo 3 extrakce nebo výpočty je třeba provést ručně, aby Excel vstřebal společný vzor výsledných hodnot. Někdy se však neřídí přesně tím vzorem, který potřebujeme, a tím pádem se bude řídit svým vlastním vzorem a poskytne vám neshodný výsledek.

Pokud bychom například měli z daných dat extrahovat dvě nuly (00), zobrazí se pouze jedna nula, nikoliv dvě. Pokud pak chcete extrahovat čísla ze začátku nebo posledních pozic v buňce, extrahuje spolu s čísly i textové hodnoty.

Přečtěte si více: Jak extrahovat čísla za určitým textem v aplikaci Excel (2 vhodné způsoby)

7. Použití kódu VBA k extrakci pouze čísel z buňky aplikace Excel

Pokud máte zájem používat Makro VBA aplikace Excel chcete z buněk extrahovat pouze čísla, pak byste měli postupovat podle níže uvedených kroků. Ukážeme vám, jak zadat kód v okně Modul VBA Tento kód požádá uživatele o zadání rozsahu vstupních a výstupních buněk.

Kroky:

  • Za prvé, stiskněte ALT+F11 otevřít VBA okno.
  • Pak z Vložte vyberte kartu Modul Zobrazí se nové okno modulu, do kterého zadáte kódy.

  • Za třetí, uvnitř modulu vložte po zkopírování následující kódy.
 Option Explicit Sub ExtractNumbersOnly() Dim CellValue As Range Dim InBx1 As Range Dim InBx2 As Range Dim NumChar As Integer Dim StartChar As Integer Dim XtrNum As String Dim DBxName1 As String Dim DBxName2 As String Dim Iteration As Integer DBxName1 = "Výběr vstupních dat" DBxName2 = "Výběr výstupních buněk" Set InBx1 = Application.InputBox("Vstupní rozsah textových buněk:", _ DBxName1, "", Type:=8)If TypeName(InBx1) = "Nothing" Then Exit Sub Set InBx2 = Application.InputBox("Select Output Cells:", _ DBxName2, "", Type:=8) If TypeName(InBx2) = "Nothing" Then Exit Sub Iteration = 0 XtrNum = "" For Each CellValue In InBx1 Iteration = Iteration + 1 NumChar = Len(CellValue) For StartChar = 1 To NumChar If IsNumeric(Mid(CellValue, StartChar, 1)) Then XtrNum = XtrNum & Mid(CellValue,StartChar, 1) End If Next StartChar InBx2.Item(Iteration) = XtrNum XtrNum = "" Next CellValue End Sub 

  • Poté stiskněte tlačítko F5 spustit kód. Zobrazí se dialogové okno s názvem " Výběr vstupních dat ".
  • Poté vyberte všechny textové buňky (tj. B5:B12 ) a stiskněte OK .

  • Poté se zobrazí další dialogové okno s názvem " Výběr výstupní buňky ", kde je třeba vybrat konkrétní buňku nebo rozsah buněk, aby se zobrazily výstupní údaje nebo hodnoty.
  • Nakonec vyberte rozsah buněk C5:C12 a stiskněte Vstupte na .

  • Následně uvidíte vyjmutá čísla z textů najednou. Tímto dokončíme sedm rychlých metod pro vyjmutí čísel pouze z buňky aplikace Excel.

🔎 Rozdělení kódu VBA

Deklarace parametrů

 Option Explicit Sub ExtractNumbersOnly() Dim cellValue As Range Dim InBx1 As Range Dim InBx2 As Range Dim NumChar As Integer Dim StartChar As Integer Dim XtrNum As String Dim DBxName1 As String Dim DBxName2 As String Dim Iteration As Integer DBxName1 = "Výběr vstupních dat" DBxName2 = "Výběr výstupních buněk" 
  • Zde v této části nejprve deklarujeme všechny naše parametry jako celá čísla, řetězcové hodnoty nebo rozsahy buněk. Poté dáváme názvy našim dialogovým oknům pomocí příkazů "Výběr vstupních dat" a "Výběr výstupní buňky" .

Definice typů vstupů a výstupů pro dialogová okna

 Set InBx1 = Application.InputBox("Vstupní rozsah textových buněk:", _ DBxName1, "", Type:=8) If TypeName(InBx1) = "Nic" Then Exit Sub Set InBx2 = Application.InputBox("Výběr výstupních buněk:", _ DBxName2, "", Type:=8) If TypeName(InBx2) = "Nic" Then Exit Sub Iteration = 0 XtrNum = "" 
  • Nyní definujeme parametry a jejich typy pro dialogová okna. Zde přidání Type:=8 znamená, že vstupní a výstupní data budou tvořena referenčními buňkami nebo rozsahem buněk.
  • Definujeme také, že pokud nebudou nalezena vstupní data, podprogram se zastaví. Uvedením tohoto makra se podprogram nezruší pro chybějící data, ale přestane fungovat.

Kombinace funkcí uvnitř smyček kódu pro iterace

 For Each cellValue In InBx1 Iteration = Iteration + 1 NumChar = Len(cellValue) For StartChar = 1 To NumChar If IsNumeric(Mid(cellValue, StartChar, 1)) Then XtrNum = XtrNum & Mid(cellValue, StartChar, 1) End If Next StartChar InBx2.Item(Iteration) = XtrNum XtrNum = "" Next cellValue End Sub 
  • Poslední ze všech částí je ta nejdůležitější, ve které aplikujeme funkce nebo vzorce, které musíme přiřadit textům, abychom zjistili výsledné hodnoty z řetězců.
  • Jednou z hlavních výhod kódování funkce pro Excel je to, že není nutné psát rozsáhlý vzorec, jak jsme to museli dělat v předchozích metodách, protože VBA má vestavěné příkazy pro použití smyček For nebo While, kde lze bez problémů provádět iteraci pro každý detail v textovém řetězci.

Přečtěte si více: Jak oddělit čísla od textu v aplikaci Excel VBA (3 metody)

Závěr

Ukázali jsme vám 7 snadných metod, jak extrahovat pouze čísla z buňky aplikace Excel. Získání pouze čísel z textového řetězce není tak jednoduché, jak se zdá, protože vyžaduje kombinaci více funkcí, což výsledný vzorec nebo syntaxi komplikuje. Doufáme však, že způsob, jakým jsme se pokusili vzorce ilustrovat rozdělením vnitřních funkcí, vám pomohl syntaxi trochu pohodlněji a snadněji pochopit.

Pokud jste našli další funkce nebo vzorce, které jsme sem měli přidat, dejte nám prosím vědět prostřednictvím svých cenných komentářů. Nebo se můžete podívat na naše další informativní a zajímavé články týkající se funkcí Excelu na tomto webu.

Hugh West je velmi zkušený školitel a analytik Excelu s více než 10 lety zkušeností v oboru. Má bakalářský titul v oboru Účetnictví a finance a magisterský titul v oboru Business Administration. Hugh má vášeň pro výuku a vyvinul jedinečný přístup k výuce, který lze snadno sledovat a pochopit. Jeho odborné znalosti Excelu pomohly tisícům studentů a profesionálů po celém světě zlepšit své dovednosti a vyniknout ve své kariéře. Prostřednictvím svého blogu Hugh sdílí své znalosti se světem a nabízí bezplatné výukové programy Excelu a online školení, které jednotlivcům a firmám pomohou dosáhnout jejich plného potenciálu.