Obsah
Hoci spoločnosť Microsoft neposkytla priamy vzorec alebo syntax na extrahovať iba čísla z bunky Excelu, môžeme zahrnúť širokú škálu Vzorce programu Excel na vytvorenie jedinej funkcie, ktorá sa dá použiť na extrahovanie iba čísel alebo číslic z buniek Excelu. V tomto článku sa pokúsime podrobne ukázať a vysvetliť, ako môžeme z buniek pomocou vhodných vzorcov vyniesť iba čísla podľa niekoľkých kritérií.
Stiahnite si cvičebnicu
Stiahnite si zadarmo cvičnú knihu, ktorú sme použili pri príprave tohto článku. Do vybraných buniek môžete zadávať textové hodnoty s číslami a okamžite zistiť výsledky pomocou vložených vzorcov.
Extrahovanie čísel z bunky.xlsm
7 efektívnych spôsobov extrakcie iba čísel z bunky programu Excel
K dispozícii bude jeden kód VBA, jedna funkcia programu Excel a päť praktických vzorcov, ktoré vám pomôžu extrahovať čísla z bunky. Tak ako na obrázku nižšie, máme niektoré kódy vrátane číslic a písmen, kde sú číslice prítomné na začiatku. Musíme extrahovať iba tieto číslice alebo čísla.
1. Vytiahnutie čísel zo začiatku textu
V tejto prvej metóde budeme kombinovať LEVÁ , SUM , LEN a SUBSTITUTE funkcie na vytiahnutie čísel zo začiatku textového reťazca. Najprv zadáme tento vzorec do bunky a potom pomocou rukoväť na plnenie , skopírujeme tento vzorec do ostatných buniek.
Kroky:
- Najprv zadajte vzorec do bunky C5 .
=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0","1","2","3","4","5","6","7","8","9"},""))))
- Po druhé, stlačte Vstúpte na stránku a dostanete číslo 34 pre prvý kód.
- Po tretie, použite Rukoväť náplne potom na automatické vyplnenie všetkých ostatných buniek v stĺpci C .
🔎 Rozdelenie vzorca
➤ SUBSTITUTE(B5,{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"},"")
- Tu sa SUBSTITUTE nájde postupne číslice (0-9) a ak ich nájde, nahradí ich v bunke B5 s prázdnym znakom zakaždým. Takže funkcia vráti ako- {"34DTXRF", "34DTXRF", "34DTXRF", "4DTXRF", "3DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF"}.
➤ LEN(SUBSTITUTE(B5,{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"},"")
- Stránka LEN určuje počet znakov v reťazci. LEN funkcia spočíta všetky znaky, ktoré sa nachádzajú v textoch prostredníctvom SUBSTITUTE Výsledné hodnoty budú v našom prípade - {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"},""))
- Táto časť sa odčíta od počtu znakov v bunke B5 ku všetkým ostatným počtom znakov nájdených jednotlivo v predchádzajúcej časti vzorca. Takže tu budú 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″},""))
- Stránka SUM funkcia potom jednoducho spočíta všetky nájdené odčítané hodnoty & takže výsledok bude tu, 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 teraz je tu posledná časť, kde LEVÁ funkcia vráti hodnoty s presným počtom znakov zľava zistených v predchádzajúcej časti vzorca. Keďže sme dostali súčtovú hodnotu 2, funkcia LEVÁ funkcia tu vráti iba 34 z textu 34DTXRF .
➥ Súvisiace: Ako oddeliť čísla v programe Excel pomocou vzorca (5 spôsobov)
2. Extrahovanie čísel z pravej strany textu
V tejto časti budeme extrahovať čísla alebo číslice z pravej strany textového reťazca. Použijeme príkaz SPRÁVNE , MIN a HĽADAŤ funkcie tu.
Kroky:
- Na začiatok, v našom súbore údajov, čo musíme zadať do bunky C5 je-
=RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789") +1)
- Potom stlačte tlačidlo Vstúpte na stránku a potom použite Rukoväť náplne na automatické vyplnenie zvyšných buniek.
🔎 Rozdelenie vzorca
➤ B5& "0123456789
- V tomto prípade spájame hodnoty v B5 bunka s 0123456789 pomocou ampersand (&) medzi nimi a dostaneme výslednú hodnotu DTXRF340123456789.
➤ SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″)
- Teraz sa HĽADAŤ funkcia postupne vyhľadá všetky číslice (0-9) vo výslednej hodnote získanej v predchádzajúcej časti a vráti pozície týchto 10 číslic v znakoch DTXRF340123456789 Takže naše výsledné hodnoty budú - {8,9,10,6,7,13,14,15,16,17}.
➤ MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″))
- Stránka MIN Funkcia sa používa na nájdenie najnižšej číslice alebo čísla v poli. Takže tu bude minimálna alebo najnižšia hodnota - 6 z poľa {8,9,10,6,7,13,14,15,16,17}, ktoré sa nachádza v predchádzajúcej časti vzorca.
➤ LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″) +1)
- Teraz je počet znakov v B5 sa nájde pomocou LEN Potom odčíta hodnotu 6(zistenú v poslednej časti) a vráti výsledok pripočítaním 1. V našom prípade bude výsledná hodnota 2 (7-6+1) .
➤ RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″) +1)
- Stránka SPRÁVNE funkcia vráti zadaný počet znakov z poslednej alebo pravej strany reťazca. Podľa výsledku zisteného postupom odčítania v predchádzajúcej časti sa tu SPRÁVNE funkcia zobrazí posledné 2 znaky z bunky B5 a to bude 34 .
Prečítajte si viac: Ako oddeliť čísla v jednej bunke v programe Excel (5 metód)
3. Extrahovanie čísel z ľubovoľnej časti textového reťazca
Teraz tu máme široké riešenie pre všetky prípady. Táto metóda vytiahne čísla alebo číslice z ľubovoľnej pozície v textovom reťazci. Navyše použijeme TEXTJOIN , IFERROR , PRIAMY , MID a ROW funkcie v tejto metóde.
Kroky:
- Najprv zadajte vzorec do cieľovej bunky takto.
=TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),""))
- Ak používate Excel 2016 alebo vyššiu verziu a potom stlačte Vstúpte na stránku , v opačnom prípade stlačte Ctrl+Shift+Enter na získanie výsledku pre tento vzorec poľa.
- Po tomto kroku automaticky vyplňte ďalšie bunky pomocou Rukoväť náplne a je to hotové.
🔎 Rozdelenie vzorca
➤ INDIRECT("1:"&LEN(B5))
- Stránka INDIRECT sa používa na uloženie poľa hodnôt buniek ako referenčného textu. Tu sa ampersand (&) príkaz spojí dĺžku znakov bunky B5 s neúplnou syntaxou rozsahu (1:) .
- Takže tu INDIRECT funkcia uloží všetky čísla od 1 do dĺžky znakov do bunky B5 ako referenčný text.
➤ ROW(INDIRECT("1:"&LEN(B5)))
- Stránka ROW funkcia zvyčajne udáva číslo riadku bunky. Ale tu v INDIRECT funkcia, pretože nebola uvedená žiadna referenčná bunka, v tomto prípade ROW funkcia vyberie všetky hodnoty alebo čísla z referenčných textov uložených v INDIRECT funkcie.
- Teraz pre prvú bunku B5 , výsledné hodnoty prostredníctvom týchto ROW a INDIRECT funkcie budú- {1;2;3;4;5;6;7;8;9}.
➤ (MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1))
- Stránka MID vám umožní určiť znaky zo stredu textového reťazca, ak je zadaná počiatočná pozícia & dĺžka.
- Takže tu pre všetkých 9 pozícií uvedených v predchádzajúcej časti MID Funkcia teraz zobrazí všetky znaky jeden po druhom pre každú pozíciu & teda vráti hodnoty ako - {"1"; "9";" "; "D"; "D"; "X"; "2"; "M"; "N"}.
➤ IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),"")
- Teraz sa IFERROR je logická funkcia, ktorá určí, či je reťazec číslo alebo niečo iné. Ak neidentifikuje reťazec s číslami alebo číslicami, potom vráti hodnotu s definovaným textovým príkazom.
- V našom prípade sa všetky hodnoty nájdené v poslednej časti vynásobia 1, a keď sa výsledky vrátia ako chyby hodnôt pre písmená alebo textové hodnoty, ktoré sa nedajú vynásobiť, ich IFERROR Funkcia prevedie chyby na prázdne reťazce. Takže naše výsledné hodnoty budú potom- {1;9;"";"";"";"";"";2;"";""}.
➤ =TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),""))
- A teraz sa vykoná posledná časť prostredníctvom TEXTJOIN Táto funkcia sa používa na spojenie alebo spojenie dvoch reťazcov so zadaným oddeľovačom.
- Takže výsledné hodnoty, ktoré sme zistili v predchádzajúcej časti, sa teraz spoja spolu s touto TEXTJOIN A tak dostaneme číslo 192.
Prečítajte si viac: Ako extrahovať viac čísel z reťazca v programe Excel (6 metód)
4. Vkladanie viacerých funkcií na vynášanie iba čísel
Teraz si ukážeme ďalší vzorec na extrakciu iba čísel z ľubovoľnej pozície z bunky programu Excel. Hoci sa môže zdať pomerne zložitý, celý vzorec rozoberieme a pokúsime sa jednoducho vysvetliť všetky kompaktné funkcie. Okrem toho použijeme IF , VEĽKÁ , INDEX , SUMPRODUCT a ISNUMBER funkcie v tomto vzorci.
- Na začiatok zadajte tento vzorec do bunky C5 . Musíte nahradiť odkaz na bunku len na základe vlastnej bunky v tabuľke a potom vložením tohto vzorca okamžite získate očakávaný výsledok. A tento vzorec funguje dokonale v akejkoľvek verzii programu 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),"")
- Potom musíte stlačiť Vstúpte na stránku až po zadaní celého vzorca a je to hotové.
🔎 Rozdelenie vzorca
Pred začatím rozpisu tohto masívneho & amp; kompaktného vzorca, môžeme ho rozdeliť na niektoré časti, ako napríklad-
=IF(A>0, SUMPRODUCT(B 1 *C 1 , B 2 *C 2 , ..........B n C n ),"")
Táto syntax znamená, že ak A je väčšia ako 0, potom všetky súčiny B n a C n sa spočítajú do konečného výsledku. A ak A nie je väčšia ako 0, potom sa výsledok vráti ako prázdna alebo prázdna bunka.
- 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),""
Rozdelenie časti 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"}, "")
- Stránka SUBSTITUTE funkcia nájde v texte postupne všetky číslice (0-9) 19 DDX2MN a nahradí tieto číslice prázdnym reťazcom na pozíciách číslic.
- Výsledné hodnoty v poli teda budú - {"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"}, ""))
- Stránka LEN Funkcia teraz spočíta počet znakov vo všetkých reťazcových hodnotách získaných z predchádzajúcej časti. Takže táto funkcia vráti ako- {9,8,8,9,9,9,9,9,9,9,8}.
➤ LEN(B5)-LEN(SUBSTITUTE(B5, {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, "")
- V tejto časti vzorca je teraz v bunke B5 odčíta všetky čísla nájdené v predchádzajúcej časti. Výsledné hodnoty budú potom- {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 pomocou SUM funkcie, hodnoty v poli nájdené v poslednej časti sa spočítajú do 3 (0+1+1+0+0+0+0+0+0+0+1).
- Takže podľa prvej časti nášho vzorca, A>0 (3>0) Teraz prejdeme k ďalšej časti rozdelenia.
Rozdelenie časti 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))
- Stránka INDIRECT funkcia tu uloží hodnoty reťazca ako odkaz na pole. Vnútri zátvorky je ampersand (&) príkaz spojí počet znakov nájdených v bunke B5 so syntaxou "Range of cells". To znamená, že od 1 do počtu definovaných znakov bude každý uložený ako odkaz na pole.
➤ ROW(INDIRECT("$1:$"&LEN(B5)))
- Teraz je to ROW vytiahne všetky čísla z poľa a výsledné hodnoty pre bunku B5 bude- {1;2;3;4;5;6;7;8;9}.
➤ MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)),1)
- V tejto časti vzorca sa MID funkcia vyjadrí všetky znaky z bunky B5 na základe všetkých pozícií nájdených ako čísla v predchádzajúcej časti. Takže extrahované hodnoty sa nájdu po tejto časti - {"1"; "9";" "; "D"; "D"; "X"; "2"; "M"; "N"}.
➤ ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))
- Ako ISNUMBER je logická funkcia, ktorá jednotlivo určí, či hodnoty nájdené v predchádzajúcej časti sú alebo nie sú číselné reťazce. Ak áno, potom vráti ako TRUE , inak sa zobrazí ako FALSE .
- Takže v našom prípade bude výsledok - {TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE}.
➤ INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))*ROW(INDIRECT("$1:$"&LEN(B5))),0)
- Ak si všimnete, že vo vnútri vyššie uvedenej funkcie je dvojitý znak, tzv. Dvojitý jednočlenný používa sa na prevod všetkých logických hodnôt na číselné reťazce - 1(TRUE) alebo 0(FALSE) . Teraz. INDEX funkcia vráti tento výsledok ako {1;1;0;0;0;0;0;0;1;0;0}.
- Potom sa výsledné hodnoty vynásobia hodnotami získanými z ROW funkcia vo vnútri poľa a výsledok bude- {1;2;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))))
- Stránka VEĽKÁ funkcia teraz preskupí najväčšie hodnoty z poľa podľa pozícií na základe čísel nájdených v ROW funkcie. & naše výsledné hodnoty pre túto časť vzorca budú- {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)
- Táto časť funkcie teraz spojí 0 s textami v bunke B5 Potom sa pridá 1 jednotlivo so všetkými číslami nájdenými v poslednej časti a zobrazte znaky z B5 bunky na základe definovaných číselných pozícií.
- Takže náš výsledok z tejto časti bude - {"2"; "9"; "1"; "0"; "0"; "0"; "0"; "0"; "0"; "0"}.
Rozdelenie časti C = (10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"")
- Táto časť určí mocniny 10 & uložte ich do poľa. Číslice mocnín sú čísla zistené z ROW funkciu predtým.
- Táto časť vzorca vráti hodnoty ako- {1;10;100;1000;10000;100000;1000000;10000000;100000000}.
Násobenie B n a C n
- Teraz sa vnútri poľa vynásobia výsledné hodnoty z posledných dvoch hlavných rozdelení B a C. Potom súčin zistený z násobenia bude - {2;90;100;0;0;0;0;0;0;0}.
- A nakoniec SUMPRODUCT funkcia spočíta tieto hodnoty nájdené v poli. Takže náš konečný výsledok bude 192 (2+90+100+0+0+0+0+0+0) , čo sú čísla extrahované z bunky B5 .
Prečítajte si viac: Ako oddeliť text a čísla v programe Excel (4 jednoduché spôsoby)
5. Extrahovanie päťciferných čísel z reťazca
Na extrakciu päťmiestnych čísel z ľubovoľnej časti reťazca v programe Excel použijeme iný vzorec. CONCAT a SEKVENCIA Okrem toho sme pre túto metódu mierne zmenili náš súbor údajov.
Kroky:
- Najprv vyberte rozsah buniek C5:C12 .
- Po druhé zadajte nasledujúci vzorec.
=CONCAT(IFERROR(0+MID(B5,SEQUENCE(LEN(B5)),1),""))
- Nakoniec stlačte Ctrl+Enter .
🔎 Rozdelenie vzorca
- LEN(B5)
- Výstup: 11 .
- Táto funkcia vracia dĺžku reťazca.
- SEQUENCE(11)
- Output: {1;2;3;4;5;6;7;8;9;10;11} .
- Táto funkcia vráti prvých jedenásť čí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″} .
- Pomocou tejto časti získavame jednotlivé znaky z reťazca.
- 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} .
- Keď k reťazcu pripočítame nulu, vráti sa chyba.
- IFERROR({1;9;#HODNOTA!;#HODNOTA!;#HODNOTA!;#HODNOTA!;2;#HODNOTA!;#HODNOTA!;#HODNOTA!;3;3},"")
- Výstup: {1;9;"";"";"";"";"";2;"";"";3;3} .
- Všetky hodnoty chýb sú prázdne.
- CONCAT({1;9;"";"";"";"";"";2;"";"";3;3})
- Výstup: 19233 .
- Nakoniec sčítame všetky hodnoty, aby sme získali iba päťmiestne čísla.
6. Použitie bleskového vyplnenia na extrakciu čísel v rámci rozsahu
Používanie stránky . Blesková výplň Funkcia je jednoduchšia a jednoduchšia ako ktorákoľvek iná vyššie uvedená metóda. Budeme extrahovať čísla z ľubovoľnej pozície v textových reťazcoch. Aby sme túto metódu vykonali správne, musíme programu Excel pomôcť nájsť vzor hodnôt buniek v stĺpci alebo riadku tak, že vykonáme extrakciu len pre prvé dve hodnoty.
Kroky:
- Na začiatok zadajte čísla ručne do bunky C5 .
- Potom začnite písať čísla z bunky B6 do bunky C6 a Excel automaticky rozpozná vzor.
- Nakoniec stlačte Vstúpte na stránku .
Poznámky: Táto metóda má určité nevýhody, preto sa neodporúča vo všetkých prípadoch, keď potrebujete extrahovať čísla z textových reťazcov. Blesková výplň sa zvyčajne riadi vzorom z buniek v stĺpci alebo rozsahu. Takže prvé 2 alebo 3 extrakcie alebo výpočty sa musia vykonať ručne, aby pomohli programu Excel absorbovať spoločný vzor výsledných hodnôt. Niekedy sa však neriadi presne tým vzorom, ktorý potrebujeme, a tým pádom sa bude riadiť vlastným vzorom a poskytne vám nesprávny výsledok.
Ak by sme napríklad mali z daných údajov vyextrahovať dve nuly (00), zobrazí sa len jedna nula, nie dve. Ak potom chcete vyextrahovať čísla zo začiatočných alebo posledných pozícií v bunke, vyextrahuje spolu s číslami aj textové hodnoty.
Prečítajte si viac: Ako extrahovať čísla po určitom texte v programe Excel (2 vhodné spôsoby)
7. Použitie kódu VBA na extrakciu iba čísel z bunky programu Excel
Ak máte záujem používať Makro Excel VBA aby ste z buniek extrahovali iba čísla, potom by ste mali postupovať podľa nižšie uvedených krokov. Ukážeme vám, ako zadať kód v Modul VBA Tento kód požiada používateľa o zadanie vstupných a výstupných rozsahov buniek.
Kroky:
- Po prvé, Stlačte ALT+F11 otvoriť VBA okno.
- Potom z Vložte vyberte kartu Modul Zobrazí sa nové okno modulu, do ktorého zadáte kódy.
- Po tretie, vo vnútri modulu vložte po skopírovaní nasledujúce 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ýber vstupných údajov" DBxName2 = "Výber výstupných buniek" Set InBx1 = Application.InputBox("Vstupný rozsah textových buniek:", _ 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
- Potom stlačte tlačidlo F5 na vykonanie kódu. Zobrazí sa dialógové okno s názvom " Výber vstupných údajov " sa zobrazí.
- Potom vyberte všetky textové bunky (t. j. B5:B12 ) a stlačte OK .
- Potom sa zobrazí ďalšie dialógové okno s názvom " Výber výstupnej bunky ", kde musíte vybrať konkrétnu bunku alebo rozsah buniek, aby sa zobrazili výstupné údaje alebo hodnoty.
- Nakoniec vyberte rozsah buniek C5:C12 a stlačte Vstúpte na stránku .
- Následne uvidíte vyextrahované čísla z textov naraz. Týmto ukončíme sedem rýchlych metód na extrakciu čísel len z bunky programu Excel.
🔎 Rozdelenie kódu VBA
➤ Deklarovanie parametrov
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ýber vstupných údajov" DBxName2 = "Výber výstupných buniek"
- V tejto časti najprv deklarujeme všetky naše parametre ako celé čísla, reťazcové hodnoty alebo rozsahy buniek. Potom dávame názvy našich dialógových okien pomocou "Výber vstupných údajov" a "Výber výstupnej bunky" .
➤ Definovanie typov vstupov a výstupov pre dialógové okná
Set InBx1 = Application.InputBox("Vstupný rozsah textových buniek:", _ DBxName1, "", Type:=8) If TypeName(InBx1) = "Nothing" Then Exit Sub Set InBx2 = Application.InputBox("Výber výstupných buniek:", _ DBxName2, "", Type:=8) If TypeName(InBx2) = "Nothing" Then Exit Sub Iteration = 0 XtrNum = ""
- Teraz definujeme parametre a ich typy pre dialógové okná. Tu pridanie Type:=8 znamená, že vstupné a výstupné údaje budú pozostávať z referenčných buniek alebo rozsahu buniek.
- Definujeme tiež, že ak sa nenájdu vstupné údaje, podprogram sa zastaví. Uvedením tohto makra sa podprogram nezruší pre chýbajúce údaje, ale prestane fungovať.
➤ Kombinovanie funkcií vo vnútri kódových slučiek pre iterácie
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á, najdôležitejšia časť, v ktorej aplikujeme funkcie alebo vzorce, ktoré musíme priradiť textom, aby sme našli výsledné hodnoty z reťazcov.
- Jednou z hlavných výhod kódovania funkcie pre Excel je, že nie je potrebné zadávať rozsiahly vzorec, ako sme to museli robiť v predchádzajúcich metódach, pretože VBA má zabudované príkazy na použitie cyklov For alebo While, v ktorých sa môže bez problémov vykonať iterácia pre každý detail v textovom reťazci.
Prečítajte si viac: Ako oddeliť čísla od textu v programe Excel VBA (3 metódy)
Záver
Ukázali sme vám 7 jednoduchých metód, ako extrahovať iba čísla z bunky programu Excel. Získavanie iba čísel z textového reťazca nie je také jednoduché, ako sa zdá, pretože si vyžaduje kombináciu viacerých funkcií, čo komplikuje výsledný vzorec alebo syntax. Dúfame však, že to, ako sme sa snažili ilustrovať vzorce rozdelením vnútorných funkcií, vám pomohlo pochopiť syntax s trochou pohodlia a ľahkosti.
Ak ste našli ďalšie funkcie alebo vzorce, ktoré sme sem mali pridať, dajte nám o nich vedieť prostredníctvom vašich cenných komentárov. Alebo si môžete pozrieť naše ďalšie informatívne a zaujímavé články týkajúce sa funkcií Excelu na tejto webovej stránke.