Sisukord
Kuigi Microsoft ei ole esitanud otsest valemit või süntaksit, et ainult numbrite väljavõtmine Exceli lahtrist, saame kaasata laia valikut Exceli valemid teha üks funktsioon, mida saab kasutada ainult numbrite või numbrite väljavõtmiseks Exceli lahtritest. Selles artiklis püüame näidata ja selgitada üksikasjalikult, kuidas saame mõne kriteeriumi alusel sobivate valemitega lahtritest välja tuua ainult numbreid.
Lae alla praktiline töövihik
Lae alla tasuta harjutusvihik, mida me kasutasime selle artikli koostamisel. Saate sisestada valitud lahtritesse tekstiväärtused koos numbritega ja leida tulemused kohe sisseehitatud valemite abil.
Numbrite väljavõtmine Cell.xlsm-st
7 tõhusat viisi ainult numbrite väljavõtmiseks Exceli lahtrist
Seal on üks VBA-kood, üks Exceli funktsioon ja viis praktilist valemit, mis aitavad teil lahtrist numbreid välja võtta. Nagu alloleval pildil, on meil mõned koodid, mis sisaldavad numbreid ja tähti, kus alguses on numbreid. Me peame välja võtma ainult need numbrid või numbrid.
1. Numbrite väljatoomine teksti algusest
Selles esimeses meetodis kombineerime VÄLJAS , SUM , LEN ja ASENDAJA funktsioonid, et tõmmata numbrid välja tekstirida algusest. Kõigepealt kirjutame selle valemi lahtrisse ja seejärel, kasutades täitekäepide kopeerime selle valemi ülejäänud lahtritesse.
Sammud:
- Kõigepealt sisestage valem lahtrisse C5 .
=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0","1","2","3","4","5","6","7","8","9"},""))))
- Teiseks, vajutage Sisesta ja saate esimese koodi numbri 34.
- Kolmandaks, kasutage Täitmise käepide seejärel täita automaatselt kõik ülejäänud lahtrid veerus C .
🔎 Valemi jaotus
➤ SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"")
- Siin on ASENDAJA funktsioon leiab järjestikused numbrid (0-9) ja kui see on leitud, siis asendab see numbri lahtris B5 iga kord tühja märgiga. Seega tagastab funktsioon {"34DTXRF", "34DTXRF", "34DTXRF", "4DTXRF", "3DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF"}.
➤ LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},""))
- The LEN funktsioon määrab tähemärkide arvu stringis. Nii et siinkohal kasutatakse funktsiooni LEN funktsioon loeb kõik tekstides leitud tähemärgid eraldi läbi ASENDAJA Tulemuslikud väärtused on siin meie puhul - {7,7,7,7,6,6,7,7,7,7,7,7,7,7}.
➤ LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},""))))
- Nüüd, see osa on lahtri tähemärkide arvu lahutamisel lahtrisse B5 kõigile teistele, eelmises valemilõigus eraldi leitud tähemärkide arvudele. Seega on siinkohal saadud väärtused - {0,0,0,0,1,1,0,0,0,0,0,0,0,0}.
➤ SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},""))))
- The SUM funktsioon summeerib siis lihtsalt kõik lahutatud väärtused, mis on leitud & nii et tulemus on siin, 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″},""))))
- Ja nüüd on siin viimane osa, kus VÄLJAS funktsioon tagastab väärtused täpse arvu tähemärkidega vasakult, mis on leitud valemi eelmises osas. Kuna me saime summa väärtuseks 2, siis on funktsiooni VÄLJA funktsioon siin tagastab ainult 34 tekstist 34DTXRF .
➥ Seotud: Kuidas eraldada numbreid Excelis valemiga (5 võimalust)
2. Numbrite väljavõtmine teksti paremast küljest
Selles jaotises eraldame numbreid või numbreid tekstistringi paremast küljest. Kasutame funktsiooni RIGHT , MIN ja OTSIMINE funktsioonid siin.
Sammud:
- Alustuseks, meie andmestikus, mida me peame kirjutama lahtrisse C5 is-
=RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789")) +1)
- Seejärel vajutage Sisesta ja seejärel kasutada Täitmise käepide ülejäänud lahtrite automaatseks täitmiseks.
🔎 Valemi jaotus
➤ B5& "0123456789″
- Siin me ühendame väärtusi, mis on seotud B5 rakk koos 0123456789 kasutades ampersand (&) nende vahel ja saame tulemuseks väärtuse DTXRF340123456789.
➤ SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″)
- Nüüd on OTSIMINE funktsioon otsib kõik numbrid (0-9) ükshaaval eelmisest lõigust saadud tulemuslikus väärtuses ja tagastab nende 10 numbri positsioonid tähemärkides DTXRF340123456789 Nii et siin on meie saadud väärtused {8,9,10,6,7,13,14,15,16,17}.
➤ MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″))
- The MIN funktsiooni kasutatakse madalaima numbri või arvu leidmiseks massiivis. Nii et siin on minimaalne või madalaim väärtus- 6 valemi eelmises osas leitud massiivi {8,9,10,6,7,13,14,15,16,17}.
➤ LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″)) +1)
- Nüüd on tähemärkide arv B5 leitakse LEN Seejärel lahutatakse väärtus 6(leitud eelmises lõigus) ja seejärel tagastatakse tulemus, lisades 1. Siin meie puhul on tulemuseks saadud väärtus 2 (7-6+1) .
➤ RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″)) +1)
- The RIGHT funktsioon tagastab määratud arvu tähemärke stringi viimasest või paremast küljest. Pärast eelmises lõigus toimunud lahutamise teel leitud tulemust, siinkohal on RIGHT funktsioon näitab 2 viimast märki lahtrist B5 , ja see on 34 .
Loe edasi: Kuidas eraldada numbrid ühes lahtris Excelis (5 meetodit)
3. Numbrite ekstraheerimine tekstijada mis tahes osast
Siin on nüüd lai lahendus kõikidele juhtudele. See meetod tõmbab välja numbrid või numbrid tekstistringi mistahes kohast. Lisaks kasutame me TEXTJOIN , IFERROR , INDIREKTNE , MID ja ROW funktsioonid selles meetodis.
Sammud:
- Kõigepealt kirjutage valem sihtruutu järgmiselt-
=TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),""))
- Kui te kasutate Excel 2016 või kõrgemat versiooni, siis vajutage Sisesta , vastasel juhul vajutage Ctrl+Shift+Enter et saada selle massiivi valemi tulemus.
- Pärast seda sammu täitke teised lahtrid automaatselt, kasutades funktsiooni Täitmise käepide ja olete valmis.
🔎 Valemi jaotus
➤ INDIRECT("1:"&LEN(B5))
- The INDIREKTNE funktsiooni kasutatakse lahtri väärtuste massiivi salvestamiseks viitetekstina. Siinkohal kasutatakse ampersandi (&) käsk ühendab lahtri tähemärkide pikkuse raku B5 mit mittetäieliku vahemiku süntaksiga (1:) .
- Niisiis, siin on INDIREKTNE funktsioon salvestab kõik numbrid vahemikus 1 ja tähemärkide pikkuse vahel lahtrisse B5 viitekirjana.
➤ ROW(INDIRECT("1:"&LEN(B5)))
- The ROW funktsioon ütleb tavaliselt lahtri rea numbri. Kuid siin on INDIREKTNE funktsioon, kuna ühtegi võrdlusrakku ei ole mainitud, siis antud juhul on ROW funktsioon ekstraheerib kõik väärtused või numbrid viitetekstidest, mis on salvestatud dokumendis INDIREKTNE funktsioon.
- Nüüd, 1. lahtri puhul B5 , saadud väärtused nende kaudu ROW ja INDIREKTNE funktsioonid on {1;2;3;4;5;6;7;8;9}.
➤ (MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)))
- The MID funktsioon võimaldab teil määrata tähemärgid teksti stringi keskelt, arvestades lähtepositsiooni & pikkust.
- Nii et siin kõigi 9 positsiooni puhul, mis on leitud eelmises punktis, on MID funktsioon näitab nüüd kõik tähemärgid ükshaaval iga positsiooni & kohta; seega tagastab väärtused {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"}.
➤ IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5)))),1)*1),"")
- Nüüd on IFERROR on loogiline funktsioon, mis määrab kindlaks, kas string on number või midagi muud. Kui see ei tuvasta stringi numbrite või numbritega, siis tagastab ta väärtuse koos määratletud tekstikomandoga.
- Meie puhul korrutatakse kõik viimases lõigus leitud väärtused 1ga ja kui tulemused tagastatakse väärtusvigadena tähtede või tekstiväärtuste puhul, mida ei saa korrutada, siis nende IFERROR funktsioon teisendab vead tühjadeks stringideks. Seega on meie saadud väärtused siis- {1;9;"";"";"";"";"";2;"";"""}.
➤ =TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),""))
- Ja nüüd teostatakse viimane osa läbi TEXTJOIN Seda funktsiooni kasutatakse kahe stringi liitmiseks või ühendamiseks määratud eraldajaga.
- Niisiis, eelmises punktis leitud tulemusväärtused ühendatakse nüüd selle kõrval kokku TEXTJOIN funktsioon. Ja nii saame arvu 192.
Loe edasi: Kuidas ekstraheerida mitu numbrit stringist Excelis (6 meetodit)
4. Mitmete funktsioonide pesitsemine, et tuua välja ainult numbreid
Nüüd näitame teile veel ühe valemi, millega saab Exceli lahtrist välja võtta ainult numbreid mis tahes positsioonist. Kuigi see võib tunduda üsna keeruline, siis me jagame kogu valemi lahti ja püüame kõiki kompaktseid funktsioone lihtsalt selgitada. Lisaks kasutame me IF , LARGE , INDEX , SUMPRODUCT ja ISNUMBER funktsioonid selles valemis.
- Alustuseks sisestage see valem lahtrisse C5 . Te peate asendama lahtriviite ainult oma lahtri põhjal arvutustabeli ja seejärel selle valemi sisestamisega saate kohe oodatud tulemuse. Ja see valem töötab suurepäraselt igas Exceli versioonis.
=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),"")
- Pärast seda tuleb vajutada Sisesta alles pärast kogu valemi sisestamist ja olete valmis.
🔎 Valemi jaotus
Enne selle massiivse & kompaktse valemi jaotuse alustamist saame selle jagada mõneks osaks nagu-
=IF(A>0, SUMPRODUCT(B 1 *C 1 , B 2 *C 2 , ..........B n C n ),"")
See süntaks tähendab, et kui A on suurem kui 0, siis on kõik saadused B n ja C n summeerub lõpptulemuseks. Ja kui A ei ole suurem kui 0, siis tagastatakse tulemuseks tühi või tühi lahter.
- 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),""
A osa jaotus = 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"}, "")
- The ASENDAJA funktsioon leiab kõik numbrid (0-9) ükshaaval tekstist. 19 DDX2MN iga kord ja asendab need numbrid tühja stringiga numbrite positsioonidel.
- Seega on saadud väärtused massiivi {"19 DDX2MN", "9 DDX2MN", "19 DDXMN", "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"}, ""))
- The LEN funktsioon loeb nüüd kõikide eelmisest lõigust saadud stringide väärtuste tähemärkide arvu. Seega annab see funktsioon tagasi {9,8,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"}, ""))
- Nüüd selles valemi osas on lahtris mitu tähemärki B5 lahutatakse kõik eelmises punktis leitud arvud. Saadud väärtused on siis- {0,1,1,0,0,0,0,0,0,0,0,0,0,1}.
➤ SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, ""))))
- Tänu abile SUM funktsiooniga, siis viimases lõigus leitud massiivi sisesed väärtused annavad kokku 3 (0+1+1+1+0+0+0+0+0+0+0+0+1).
- Niisiis, vastavalt meie valemi esimesele osale, A>0 (3>0) Nüüd liigume jaotuse järgmise osa juurde.
B osa jaotamine = 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))
- The INDIREKTNE funktsioon siin salvestab stringi väärtused viitena massiivile. Sulgude sees on ampersandi (&) käsk liidab lahtris leitud tähemärkide arvu B5 Range of cells'i süntaksiga. See tähendab, et alates 1 kuni määratletud tähemärkide arvuni salvestatakse iga tähemärk massiivi viitena.
➤ ROW(INDIRECT("$1:$"&LEN(B5)))
- Nüüd, see ROW funktsioon tõmbab välja kõik arvud massiivi ja saadud väärtused lahtrisse B5 on {1;2;3;4;5;6;7;8;9}.
➤ MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1)
- Valemi selles osas on MID funktsioon väljendab kõik tähemärgid lahtrist B5 mis põhineb kõigil eelmises osas numbritena leitud positsioonidel. Seega leitakse pärast seda osa ekstraheeritud väärtused {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"}.
➤ ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))
- Nagu ISNUMBER on loogiline funktsioon, see määrab individuaalselt, kas eelmises lõigus leitud väärtused on numbrite stringid või mitte. Kui jah, siis tagastab see kui TÕELINE , vastasel juhul kuvatakse VALE .
- Nii et meie puhul on tulemus {TÕENE;TÕENE;VALE;VALE;VALE;VALE;VALE;VALE;TÕENE;VALE;VALE;VALE;VALE}.
➤ INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))*ROW(INDIRECT("$1:$"&LEN(B5))),0)
- Kui te märkate ülaltoodud funktsiooni sees topeltühikut, mis on tuntud kui Double Unary Seda kasutatakse kõikide loogiliste väärtuste teisendamiseks numbrite stringideks - 1(TRUE) või 0(FALSE) Nüüd on INDEX funktsioon tagastab selle tulemuse {1;1;0;0;0;0;0;1;0;0;0}.
- Pärast seda korrutatakse saadud väärtused väärtustega, mis on saadud valemiga ROW funktsioon massiivi sees ja tulemus on {1;2;0;0;0;0;0;7;0;0;0}.
➤ LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))*ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))
- The LARGE funktsioon paigutab nüüd massiivi suurimad väärtused ümber vastavalt positsioonidele, mis põhinevad numbrites leitud numbritel ROW funktsioonid. & meie valemiga saadud väärtused selles osas on {7;2;1;0;0;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))
- Nüüd, see osa funktsioonist ühendab kokku 0 koos tekstidega lahtris B5 Siis lisab see 1 individuaalselt kõigi viimases lõigus leitud numbritega ja näitama tähemärke alates B5 lahtri määratletud numbrite positsioonide alusel.
- Seega on meie tulemused selles lõigus järgmised: {"2"; "9"; "1"; "0"; "0"; "0"; "0"; "0"; "0"; "0"; "0"}.
C osa jaotamine = (10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"")
- See osa määrab 10 & potensused; salvestage need massiivi sees. Potensuste numbrid on leitud arvud, mis on leitud alates ROW funktsiooni varem.
- See osa valemist annab väärtused {1;10;100;1000;10000;100000;1000000;10000000;100000000}.
B korrutamine n ja C n
- Nüüd korrutatakse kahe viimase suure jaotuse B ja C saadud väärtused nüüd massiivi sees. Siis on korrutamisel leitud produktid {2;90;100;0;0;0;0;0;0;0;0}.
- Ja lõpuks SUMPRODUCT funktsioon summeerib need massiivi leitud väärtused. Seega on meie lõpptulemuseks 192 (2+90+100+0+0+0+0+0+0) , mis on lahtrist ekstraheeritud arvud B5 .
Loe edasi: Kuidas eraldada teksti ja numbreid Excelis (4 lihtsat viisi)
5. Viiekohaliste numbrite väljavõtmine stringist
Kasutame veel ühte valemit, et ekstraheerida viiekohalisi numbreid Exceli mistahes stringi osast. Kasutame valemit CONCAT ja SEQUENCE funktsioonid esmakordselt käesolevas punktis. Lisaks oleme selle meetodi jaoks oma andmestikku veidi muutnud.
Sammud:
- Kõigepealt valige lahtrivahemik C5:C12 .
- Teiseks kirjutage järgmine valem.
=CONCAT(IFERROR(0+MID(B5,SEQUENCE(LEN(B5)),1),""))
- Lõpuks vajutage Ctrl+Enter .
🔎 Valemi jaotus
- LEN(B5)
- Väljund: 11 .
- See funktsioon tagastab stringi pikkuse.
- SEQUENCE(11)
- Output: {1;2;3;4;5;6;7;8;9;10;11} .
- See funktsioon tagastab esimesed üksteist numbrit.
- MID(B5,{1;2;3;4;5;6;7;8;9;10;11},1)
- Väljund: {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″} .
- Selle osa abil saame stringist üksikud tähemärgid.
- 0+{"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″}
- Väljund: {1;9;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;2;#VALUE!;#VALUE!;#VALUE!;3;3} .
- Kui me lisame nulli koos stringiga, annab see tagasi vea.
- IFERROR({1;9;#VÄÄRTUS!;#VÄÄRTUS!;#VÄÄRTUS!;#VÄÄRTUS!;2;#VÄÄRTUS!;#VÄÄRTUS!;#VÄÄRTUS!;3;3},"")
- Väljund: {1;9;"";"";"";"";"";2;"";"";"";3;3} .
- Kõik veaväärtused on tühjad.
- CONCAT({1;9;"";"";"";"";"";2;"";"";3;3})
- Väljund: 19233 .
- Lõpuks liidame kõik väärtused kokku, et eraldada ainult viiekohalised numbrid.
6. Flash Fill'i kasutamine numbrite väljavõtmiseks vahemiku sees
Kasutades . Flash Fill funktsioon on lihtsam ja lihtsam kui kõik teised eespool nimetatud meetodid. Me kavatseme ekstraheerida numbreid tekstiridade mis tahes positsioonist. Et seda meetodit korralikult teostada, peame aitama Excelil leida veeru või rea lahtri väärtuste mustri, tehes ekstraheerimise ainult kahe esimese väärtuse jaoks.
Sammud:
- Alustuseks sisestage numbrid käsitsi lahtrisse C5 .
- Seejärel alustage numbrite sisestamist lahtrist B6 rakule C6 ja Excel tunneb mustri automaatselt ära.
- Lõpuks vajutage Sisesta .
Märkused: Sellel meetodil on mõningaid puudusi, mistõttu ei ole see soovitatav kõigil juhtudel, kui on vaja tekstisõnadest numbreid ekstraheerida. Flash Fill järgib tavaliselt veeru või vahemiku lahtrite mustrit. Seega tuleb esimesed 2 või 3 väljavõtet või arvutust teha käsitsi, et Excel saaks tulemuseks olevate väärtuste ühise mustri omaks võtta. Kuid mõnikord ei järgi ta täpselt seda mustrit, mida me vajame, ja seeläbi järgib ta omaenda mustrit ja annab valesti sobiva tulemuse.
Näiteks kui meil oleks vaja antud andmetest eraldada kaks nulli (00), siis näitaks see ainult ühte nulli, mitte kahte. Kui te soovite eraldada numbreid lahtri algusest või viimastest positsioonidest, siis eraldab see koos numbritega ka tekstiväärtused.
Loe edasi: Kuidas ekstraheerida numbreid pärast konkreetset teksti Excelis (2 sobivat viisi)
7. VBA-koodi rakendamine ainult numbrite väljavõtmiseks Exceli lahtrist
Kui olete huvitatud Exceli VBA makro ainult numbreid lahtritest eraldada, siis soovid sa järgida alljärgnevaid samme. Näitame, kuidas koodi sisestada koodis VBA moodul See kood palub kasutajal määrata sisend- ja väljundruutude vahemikud.
Sammud:
- Esiteks, vajutage ALT+F11 avada VBA aken.
- Siis, alates Sisesta vahekaart, valige Moodul Uus mooduli aken ilmub, kuhu sisestate koodid.
- Kolmandaks kleepige oma mooduli sees pärast kopeerimist järgmised koodid.
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 = "Input Data Selection" DBxName2 = "Output Cell Selection" Set InBx1 = Application.InputBox("Input Range of Text Cells:", _ 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
- Seejärel vajutage F5 koodi täitmiseks. Dialoogiaken nimega " Sisendandmete valik " ilmub.
- Seejärel valige kõik tekstiruudud (st. B5:B12 ) ja vajutage OK .
- Pärast seda ilmub veel üks dialoogiboks nimega " Väljundi lahtri valik ", kus peate valima konkreetse lahtri või lahtrite vahemiku, et näha väljundandmeid või -väärtusi.
- Lõpuks valige lahtrivahemik C5:C12 ja vajutage Sisesta .
- Järelikult näete tekstidest ekstraheeritud numbreid korraga. Seega lõpetame seitse kiiret meetodit numbrite ekstraheerimiseks ainult Exceli lahtrist.
🔎 VBA koodi lahtikirjutamine
➤ Parameetrite deklareerimine
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 = "Input Data Selection" DBxName2 = "Output cell Selection"
- Siin selles osas deklareerime kõigepealt kõik oma parameetrid täisarvudeks, string-väärtusteks või lahtrite vahemikeks. Seejärel anname oma dialoogibokside nimed koos "Sisendandmete valik" ja "Väljundi lahtri valik" .
➤ Sisendite ja väljundite tüüpide määratlemine dialoogibokside jaoks
Set InBx1 = Application.InputBox("Tekstirakkude sisestusvahemik:", _ 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 = ""
- Nüüd määratleme dialoogibokside jaoks parameetrid ja nende tüübid. Siin tähendab Type:=8 lisamine, et sisend- ja väljundandmed koosnevad võrdlusrakudest või rakkude vahemikust.
- Samuti määratleme, et kui sisendandmeid ei leita, siis alamprogramm peatub. Selle makro mainimisega ei katkesta alamprogramm puuduvate andmete tõttu, vaid lõpetab toimimise.
➤ Funktsioonide kombineerimine koodisilmuste sees korduste jaoks
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
- Viimasena on see kõige olulisem osa, kus me rakendame funktsioone või valemeid, mida peame tekstidele määrama, et leida stringidest tulenevaid väärtusi.
- Exceli funktsiooni kodeerimise üks peamisi eeliseid on see, et ei ole vaja kirjutada suurt valemit, nagu me pidime tegema eelmiste meetodite puhul, sest VBA-l on sisseehitatud käsud For- või While-silmuste kasutamiseks, kus iteratsiooni iga tekstiriba detaili kohta saab teostada ilma igasuguse vaevata.
Loe edasi: Kuidas eraldada numbrid tekstist Excel VBA-s (3 meetodit)
Kokkuvõte
Oleme näidanud teile 7 lihtsat meetodit, et ainult numbrite väljavõtmine Exceli lahtrist. Ainult numbrite väljavõtmine tekstiribast ei ole nii lihtne, kui tundub, sest see nõuab mitme funktsiooni kombinatsiooni, mis muudab lõpliku valemi või süntaksi keeruliseks. Kuid loodame, et see, kuidas me oleme püüdnud vormelid illustreerida, lõhkudes sisemised funktsioonid, on aidanud teil süntaksist veidi mugavamalt ja kergemini aru saada.
Kui leiate veel funktsioone või valemeid, mida me oleksime pidanud siia lisama, siis palun andke meile oma väärtuslikes kommentaarides teada. Või võite heita pilgu meie informatiivsematele ja huvitavamatele artiklitele, mis on seotud Exceli funktsioonidega sellel veebisaidil.