Miten poimia vain numerot Excel-solusta (7 helppoa tapaa)

  • Jaa Tämä
Hugh West

Vaikka Microsoft ei ole antanut suoraa kaavaa tai syntaksia, jolla poimia vain numeroita Excel-solusta, voimme sisällyttää laajan valikoiman erilaisia Excel-kaavat tehdä yksi funktio, jota voidaan käyttää vain numeroiden tai numeroiden poimimiseen Excelin soluista. Tässä artikkelissa yritämme näyttää ja selittää yksityiskohtaisesti, miten voimme tuoda esiin vain numeroita soluista sopivilla kaavoilla muutamien kriteerien mukaisesti.

Lataa harjoituskirja

Lataa ilmaiseksi harjoituskirja, jota olemme käyttäneet tämän artikkelin laatimiseen. Voit syöttää tekstiarvot numeroilla valittuihin soluihin ja löytää tulokset välittömästi upotettujen kaavojen avulla.

Numeroiden poimiminen Cell.xlsm:stä

7 tehokasta tapaa poimia vain numerot Excel-solusta

Tässä on yksi VBA-koodi, yksi Excel-ominaisuus ja viisi käytännön kaavaa, joiden avulla voit poimia numeroita solusta. Kuten alla olevassa kuvassa, meillä on joitakin koodeja, jotka sisältävät numeroita ja kirjaimia, joiden alussa on numeroita. Meidän on poimittava vain nämä numerot tai numerot.

1. Numeroiden poiminta tekstin alusta

Tässä ensimmäisessä menetelmässä yhdistetään VASEMPI , SUMMA , LEN ja SIJAINEN funktioita, joilla saadaan numeroita tekstijonon alusta. Ensin kirjoitetaan tämä kaava soluun, ja sitten, käyttämällä komentoa täyttökahva , kopioimme kaavan muihin soluihin.

Vaiheet:

  • Kirjoita ensin kaava soluun C5 .

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

  • Toiseksi, paina Kirjoita ja saat ensimmäisenä koodina numeron 34.

  • Kolmanneksi, käytä Täyttökahva sitten täyttää automaattisesti kaikki muut solut sarakkeessa C .

🔎 Kaavan erittely

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

  • Täällä SIJAINEN funktio etsii numerot (0-9) peräkkäin, ja jos ne löytyvät, se korvaa kyseisen numeron solussa B5 joka kerta tyhjällä merkillä. Funktio palauttaa siis {"34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "4DTXRF", "3DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF"}.

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

  • The LEN funktio määrittää merkkijonon merkkien lukumäärän. Tässä tapauksessa funktio LEN funktio laskee kaikki teksteistä löytyvät merkit yksitellen läpi SIJAINEN Tulosarvot ovat tässä tapauksessa {7,7,7,7,6,6,6,7,7,7,7,7,7,7,7}.

  • Tämä osa on vähennys solun merkkien määrästä. B5 kaikkiin muihin merkkien lukumääriin, jotka on löydetty yksitellen kaavan edellisessä osassa. Tässä tapauksessa tulosarvot ovat siis - {0,0,0,0,1,1,0,0,0,0,0,0,0}.

  • The SUMMA funktio yksinkertaisesti laskee yhteen kaikki vähennetyt arvot, jotka on löydetty & joten tulos on tässä, 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″, "5″, "6″, "7″, "8″, "9″},"" ))))

  • Ja nyt tässä on viimeinen osa, jossa VASEMPI funktio palauttaa arvot, joissa on täsmälleen sama määrä merkkejä vasemmalta kuin kaavan edellisessä osassa. Koska saimme summa-arvoksi 2, funktio VASEMPI funktio palauttaa vain 34 tekstistä 34DTXRF .

Liittyy asiaan: Miten erotetaan numerot Excelissä käyttämällä kaavaa (5 tapaa)

2. Numeroiden poimiminen tekstin oikealta puolelta

Tässä osiossa poimimme numerot tai numerot tekstijonon oikealta puolelta. Käytämme komentoa RIGHT , MIN ja HAKU toimintoja täällä.

Vaiheet:

  • Aluksi, meidän tietokokonaisuutemme mitä meidän täytyy kirjoittaa soluun C5 is-

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

  • Paina sen jälkeen Kirjoita ja käytä sitten Täyttökahva täyttää loput solut automaattisesti.

🔎 Kaavan erittely

B5& "0123456789″

  • Tässä yhdistämme arvoja, jotka ovat kohdassa B5 solu, jossa on 0123456789 käyttämällä Amperand (&) niiden välille ja saamme tuloksena arvon DTXRF340123456789.

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

  • Nyt HAKU funktio etsii kaikki numerot (0-9) yksi kerrallaan edellisessä osiossa saadusta tuloksellisesta arvosta ja palauttaa näiden 10 numeron sijainnit merkkien DTXRF340123456789 Tässä tapauksessa tuloksemme ovat {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 funktiota käytetään matalimman numeron tai luvun löytämiseen matriisista. Tässä tapauksessa pienin tai alin arvo on- 6 kaavan edellisessä osassa löydetystä joukosta {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)

  • Nyt merkkien määrä B5 löytyy LEN Sitten se vähentää arvon 6 (joka löytyi edellisessä osassa) ja palauttaa tuloksen lisäämällä siihen 1. Tässä tapauksessa tuloksena on arvo 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 funktio palauttaa määritetyn määrän merkkejä merkkijonon viimeisestä tai oikeasta reunasta. Edellisessä kappaleessa esitetyn vähennyslaskuprosessin tuloksen jälkeen, tässä funktio RIGHT toiminto näyttää solun 2 viimeistä merkkiä B5 ja se on 34 .

Lue lisää: Kuinka erottaa numerot yhdessä solussa Excelissä (5 menetelmää)

3. Numeroiden poimiminen mistä tahansa tekstijonon osasta tahansa

Tässä on nyt laaja ratkaisu kaikkiin tapauksiin. Tämä menetelmä poimii numerot tai numerot mistä tahansa kohdasta tekstijonossa. Lisäksi käytämme menetelmää nimeltä TEXTJOIN , IFERROR , INDIRECT , MID ja ROW toiminnot tässä menetelmässä.

Vaiheet:

  • Kirjoita ensin kaava kohdesoluun seuraavasti-

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

  • Sitten, jos käytät Excel 2016 tai uudempi versio ja paina sitten Kirjoita , muuten paina Ctrl+Shift+Enter saadaksesi tuloksen tälle matriisikaavalle.
  • Tämän vaiheen jälkeen täytä muut solut automaattisesti käyttämällä komentoa Täyttökahva ja olet valmis.

🔎 Kaavan erittely

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

  • The INDIRECT funktiota käytetään tallentamaan solujen arvojen joukko viitetekstiksi. Tässä tapauksessa amperemerkki (&) komento ketjuttaa solun merkkien pituuden B5 epätäydellisellä vaihteluvälin syntaksilla (1:) .
  • Tässä siis INDIRECT funktio tallentaa kaikki numerot välillä 1 ja merkkien pituuden välillä soluun B5 viitekirjana.

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

  • The ROW funktio kertoo yleensä solun rivinumeron. Mutta tässä kohdassa INDIRECT funktiota, koska mitään viitesolua ei ole mainittu, tässä tapauksessa ROW funktio poimii kaikki arvot tai numerot viiteteksteistä, jotka on tallennettu tiedostoon INDIRECT toiminto.
  • Nyt 1. solun osalta B5 , tulokseksi saadut arvot näiden ROW ja INDIRECT funktiot ovat: {1;2;3;4;5;6;7;8;9}.

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

  • The MID funktiolla voit määrittää merkit merkkijonon keskeltä, kun annat aloituspaikan & pituuden.
  • Tässä siis kaikkien edellisessä jaksossa havaittujen 9 paikan kohdalla MID funktio näyttää nyt kaikki merkit yksi kerrallaan jokaisessa asemassa & palauttaa siis arvot {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"}.

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

  • Nyt IFERROR on looginen funktio, joka määrittää, onko merkkijono numero vai jokin muu. Jos se ei tunnista merkkijonoa, jossa on numeroita tai numeroita, se palauttaa arvon määritellyllä tekstikomennolla.
  • Meidän tapauksessamme kaikki viimeisessä osiossa löydetyt arvot kerrotaan 1:llä, ja kun tulokset palautetaan arvovirheinä kirjainten tai tekstiarvojen osalta, joita ei voida kertoa, niiden IFERROR funktio muuntaa virheet tyhjiksi merkkijonoiksi. Tuloksena olevat arvot ovat siis- {1;9;"";"";"";"";"";"";2;"";""}.

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

  • Ja nyt viimeinen osa suoritetaan komennolla TEXTJOIN funktio. Tätä funktiota käytetään kahden merkkijonon ketjuttamiseen tai yhdistämiseen määritetyllä erottimella.
  • Edellisessä jaksossa löytämämme arvot liitetään nyt yhteen tämän lisäksi. TEXTJOIN Ja näin saamme luvun 192.

Lue lisää: Kuinka poimia useita numeroita merkkijonosta Excelissä (6 menetelmää)

4. Useiden funktioiden pesäyttäminen vain numeroiden tuottamiseksi esiin

Nyt näytämme sinulle toisen kaavan, jolla voit poimia Excel-solusta vain numeroita mistä tahansa kohdasta. Vaikka se saattaa vaikuttaa melko monimutkaiselta, puramme koko kaavan ja yritämme selittää kaikki kompaktit toiminnot helposti. Lisäksi käytämme komentoa IF , LARGE , INDEX , SUMPRODUCT ja ISNUMBER toimintoja tässä kaavassa.

  • Kirjoita aluksi tämä kaava soluun C5 Sinun on korvattava soluviittaus vain oman taulukkolaskentataulukon solun perusteella, ja sitten upottamalla tämä kaava saat odotetun tuloksen heti. Ja tämä kaava toimii täydellisesti missä tahansa Excel-versiossa.

=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),"")

  • Sen jälkeen sinun on painettava Kirjoita vasta kun olet kirjoittanut koko kaavan ja olet valmis.

🔎 Kaavan erittely

Ennen kuin aloitamme tämän massiivisen & kompaktin kaavan erittelyn, voimme jakaa sen joihinkin osiin, kuten-

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

Tämä syntaksi tarkoittaa, että jos A on suurempi kuin 0, niin kaikki seuraavien arvojen tuotteet B n ja C n saadaan lopputulos. Ja mikäli A ei ole suurempi kuin 0, tulos on tyhjä tai tyhjä solu.

  • 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-osan jaottelu = 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 SIJAINEN toiminto etsii kaikki numerot (0-9) yksitellen tekstistä. 19 DDX2MN joka kerta ja korvaa nämä numerot tyhjällä merkkijonolla numeroiden kohdalla.
  • Näin ollen tuloksena olevat arvot ovat- {"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 funktio laskee nyt merkkien lukumäärän kaikissa edellisestä osiosta saaduissa merkkijonoarvoissa. Tämä funktio palauttaa siis {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″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "7″, "8″, "8″, "9"}, "")))

  • Nyt tässä kaavan osassa solun B5 vähennetään kaikki edellisessä kohdassa löydetyt luvut, jolloin tuloksena saadaan {0,1,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″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "7″, "8″, "8″, "8″, "9"}, ""))))

  • Avulla SUMMA funktiolla, viimeisessä osassa löydetyn matriisin sisällä olevat arvot summautuvat 3:ksi (0+1+1+0+0+0+0+0+0+0+0+1).
  • Kaavamme ensimmäisen osan mukaan, A>0 (3>0) Siirrymme seuraavaan osaan.

B-osan jaottelu = 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 INDIRECT funktio tallentaa merkkijonojen arvot viittauksena arrayyn. Sulkumerkkien sisällä on merkkijonon merkkijono. (&) komento yhdistää solusta löytyvien merkkien määrän. B5 Se tarkoittaa, että 1:stä määriteltyyn merkkien lukumäärään asti jokainen merkki tallennetaan array-viittauksena.

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

  • Nyt tämä ROW funktio poimii kaikki numerot matriisista ja tuloksena olevat arvot soluun B5 on- {1;2;3;4;5;6;7;8;9}.

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

  • Tässä kaavan osassa MID funktio ilmaisee kaikki merkit solusta B5 perustuen kaikkiin edellisessä osassa numeroina löydettyihin asemiin. Näin ollen poimitut arvot löytyvät tämän osan jälkeen: {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"}.

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

  • Kuten ISNUMBER on looginen funktio, ja se määrittää erikseen, ovatko edellisessä kohdassa löydetyt arvot numerojonoja vai eivät. Jos vastaus on kyllä, se palaa muodossa TRUE , muutoin se näkyy muodossa FALSE .
  • Meidän tapauksessamme tulos on siis {TOTU;TOTU;VÄÄRIN;VÄÄRIN;VÄÄRIN;VÄÄRIN;VÄÄRIN;TOTU;VÄÄRIN;VÄÄRIN;VÄÄRIN}.

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

  • Jos huomaat yllä olevan funktion sisällä kaksoisyhdysmerkin, joka tunnetaan nimellä Kaksinkertainen Unary Sen avulla kaikki loogiset arvot muunnetaan lukujonoiksi - 1(TOTE) tai 0(FALSE) . Nyt INDEX funktio palauttaa tämän tuloksen muodossa {1;1;0;0;0;0;0;1;0;0;0}.
  • Tämän jälkeen tuloksena saadut arvot kerrotaan arvoilla, jotka on saatu laskennasta ROW funktiota matriisin sisällä, ja tulos 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 funktio järjestää nyt suurimmat arvot uudelleen matriisista niiden paikkojen mukaan, jotka perustuvat numeroihin, jotka löytyvät sarakkeesta ROW funktiot. & kaavan tämän osan tulosarvot ovat- {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))

  • Tämä osa funktiosta yhdistää seuraavat osat 0 solussa olevien tekstien kanssa B5 . Sitten se lisää 1 yksilöllisesti kaikki numerot löytyi viimeisessä osassa ja näyttää merkit alkaen B5 solu määritettyjen numeropaikkojen perusteella.
  • Tämän jakson tulos on siis {"2″; "9″; "1″; "0″; "0″; "0″; "0″; "0″; "0″; "0″; "0″; "0"}.

C-osan jaottelu = (10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"")

  • Tässä osassa määritetään 10 &:n potenssit; tallenna ne matriisin sisälle. Potenssien numerot ovat numeroita, jotka löytyvät sarjasta ROW toiminto aiemmin.
  • Tämä kaavan osa palauttaa arvot {1;10;100;1000;10000;100000;1000000;10000000;100000000}.

B:n kertominen n ja C n

  • Kahden viimeisen pääerittelyn B ja C tulokseksi saadut arvot kerrotaan nyt matriisin sisällä. Kertolaskujen tulokseksi saadaan {2;90;100;0;0;0;0;0;0;0;0}.
  • Ja lopuksi SUMPRODUCT funktio laskee yhteen nämä matriisista löytyvät arvot. Lopputuloksemme on siis seuraava 192 (2+90+100+0+0+0+0+0+0) , joka on solusta B5 .

Lue lisää: Tekstin ja numeroiden erottaminen Excelissä (4 helppoa tapaa)

5. Viisinumeroisten numeroiden poimiminen merkkijonosta

Käytämme toista kaavaa, jolla voimme poimia viisi numeroa mistä tahansa merkkijonon osasta Excelissä. Käytämme kaavaa nimeltä CONCAT ja SEQUENCE Lisäksi olemme muuttaneet hieman tietokantaamme tätä menetelmää varten.

Vaiheet:

  • Valitse ensin solualue C5:C12 .
  • Kirjoita toiseksi seuraava kaava.

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

  • Paina lopuksi Ctrl+Enter .

🔎 Kaavan erittely

  • LEN(B5)
    • Lähtö: 11 .
    • Tämä funktio palauttaa merkkijonon pituuden.
  • SEQUENCE(11)
    • Output: {1;2;3;4;5;6;7;8;9;10;11} .
    • Tämä funktio palauttaa yksitoista ensimmäistä numeroa.
  • MID(B5,{1;2;3;4;5;6;7;8;9;10;11},1)
    • Lähtö: {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″}. .
    • Tämän osan avulla saamme yksittäiset merkit merkkijonosta.
  • 0+{"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″}}
    • Output: {1;9;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;2;#VALUE!;#VALUE!;3;3} .
    • Kun lisäämme nollan merkkijonoon, se palauttaa virheen.
  • IFERROR({1;9;#ARVO!;#ARVO!;#ARVO!;#ARVO!;#ARVO!;2;#ARVO!;#ARVO!;#ARVO!;3;3}","")
    • Lähtö: {1;9;"";"";"";"";"";2;"";"";"";3;3} .
    • Kaikki virhearvot ovat tyhjiä.
  • CONCAT({1;9;"";"";"";"";"";2;"";"";3;3})
    • Tuotos: 19233 .
    • Lopuksi laskemme kaikki arvot yhteen, jotta saamme vain viisinumeroiset luvut.

6. Flash Fillin käyttäminen numeroiden poimimiseen alueelta

Käyttämällä ... Salaman täyttö ominaisuus on helpompi ja yksinkertaisempi kuin mikään muu edellä mainittu menetelmä. Aiomme poimia numerot mistä tahansa tekstirivin kohdasta. Jotta tämä menetelmä voidaan toteuttaa oikein, meidän on autettava Exceliä löytämään sarakkeen tai rivin solujen arvojen kuvio tekemällä poiminta vain kahdelle ensimmäiselle arvolle.

Vaiheet:

  • Kirjoita aluksi numerot manuaalisesti soluun C5 .

  • Aloita sitten numeroiden kirjoittaminen solusta B6 soluun C6 ja Excel tunnistaa kuvion automaattisesti.
  • Paina lopuksi Kirjoita .

Huomautuksia: Tällä menetelmällä on joitakin haittoja, minkä vuoksi sitä ei suositella kaikkiin tapauksiin, joissa numeroita on poimittava tekstijonoista. Salaman täyttö noudattaa yleensä sarakkeen tai alueen solujen mallia. Ensimmäiset 2 tai 3 uuttoa tai laskutoimitusta on siis tehtävä manuaalisesti, jotta Excel pystyy omaksumaan tuloksena olevien arvojen yhteisen mallin. Joskus se ei kuitenkaan noudata täsmälleen tarvitsemaamme mallia, jolloin se noudattaa omaa malliaan ja antaa vääränlaisen tuloksen.

Jos esimerkiksi meidän pitäisi poimia kaksi nollaa (00) annetuista tiedoista, se näyttää vain yhden nollan, ei kahta. Jos haluat poimia numeroita solun alusta tai viimeisistä kohdista, se poimii myös tekstiarvot numeroiden lisäksi.

Lue lisää: Kuinka poimia numerot tietyn tekstin jälkeen Excelissä (2 sopivaa tapaa)

7. VBA-koodin soveltaminen vain numeroiden poimimiseen Excel-solusta

Jos olet kiinnostunut käyttämään Excel VBA -makro poimia vain numeroita soluista, niin haluat noudattaa alla olevia ohjeita. Näytämme, miten koodi kirjoitetaan kenttään VBA-moduuli Tämä koodi pyytää käyttäjää määrittämään syöttö- ja tulostussolualueet.

Vaiheet:

  • Ensinnäkin, paina ALT+F11 avataksesi VBA ikkuna.
  • Sitten, alkaen Lisää Valitse välilehti Moduuli Uusi moduuli-ikkuna avautuu, johon kirjoitat koodit.

  • Kolmanneksi, liitä seuraavat koodit moduulisi sisään kopioinnin jälkeen.
 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 = "Tulotietojen valinta" DBxName2 = "Tulosolujen valinta" Set InBx1 = Application.InputBox("Tekstisolujen syöttöalue:", _ DBxName1, "", Type:=8)If TypeName(InBx1) = "Ei mitään" Then Exit Sub Set InBx2 = Application.InputBox("Select Output Cells:", _ DBxName2, "", Type:=8) If TypeName(InBx2) = "Ei mitään" 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 

  • Paina sen jälkeen F5 koodin suorittamiseksi." -niminen valintaikkuna " Syöttötietojen valinta " tulee näkyviin.
  • Valitse sitten kaikki tekstisolut (esim. B5:B12 ) ja paina OK .

  • Tämän jälkeen toinen valintaikkuna nimeltä " Lähtökennon valinta ", jossa sinun on valittava tietty solu tai solualue nähdäksesi tulostiedot tai -arvot.
  • Valitse lopuksi solualue C5:C12 ja paina Kirjoita .

  • Näin ollen näet tekstistä poimitut numerot kerralla. Näin ollen lopetamme seitsemän nopeaa menetelmää, joilla voit poimia numeroita vain Excel-solusta.

🔎 VBA-koodin erittely

Parametrien ilmoittaminen

 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 = "Tulotietojen valinta" DBxName2 = "Tulosolujen valinta" 
  • Tässä osassa ensin ilmoitamme kaikki parametrit kokonaislukuina, merkkijonoarvoina tai solualueina. Sitten annamme dialogilaatikoiden nimet komennoilla "Syöttötietojen valinta" ja "Lähtösolun valinta" .

Sisääntulotyyppien määrittäminen; dialogiruutujen lähdöt

 Set InBx1 = Application.InputBox("Tekstisolujen syöttöalue:", _ DBxName1, "", Type:=8) If TypeName(InBx1) = "Ei mitään" Then Exit Sub Set InBx2 = Application.InputBox("Valitse ulostulosolut:", _ DBxName2, "", Type:=8) If TypeName(InBx2) = "Ei mitään" Then Exit Sub Iteration = 0 XtrNum = "" 
  • Nyt määrittelemme parametrit ja niiden tyypit valintaikkunoita varten. Tässä tapauksessa Type:=8 tarkoittaa, että tulo- ja lähtötiedot koostuvat viitesoluista tai solualueesta.
  • Määrittelemme myös, että jos syöttötietoja ei löydy, aliohjelma pysähtyy. Mainitsemalla tämän makron aliohjelma ei keskeydy puuttuvien tietojen takia, vaan se lopettaa toimintansa.

Koodin sisällä olevien funktioiden yhdistäminen toistosilmukoita varten

 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 
  • Viimeiseksi tämä on kaikkein tärkein osa, jossa sovellamme funktioita tai kaavoja, jotka meidän on määritettävä teksteille, jotta voimme löytää merkkijonojen tuloksena olevat arvot.
  • Yksi Excelin funktiokoodauksen suurimmista eduista on se, että ei ole tarpeen kirjoittaa suurta kaavaa, kuten aiemmissa menetelmissä, sillä VBA:ssa on sisäänrakennettuja komentoja For- tai While-silmukoiden käyttämiseen, jolloin tekstin merkkijonon jokaisen yksityiskohdan iterointi voidaan suorittaa ilman vaivaa.

Lue lisää: Numeroiden erottaminen tekstistä Excel VBA: ssa (3 menetelmää)

Päätelmä

Olemme näyttäneet sinulle 7 helppoa tapaa poimia vain numeroita Excel-solusta. Pelkkien numeroiden poimiminen tekstijonosta ei ole niin yksinkertaista kuin miltä se näyttää, koska se edellyttää useiden funktioiden yhdistelmää, mikä tekee lopullisesta kaavasta tai syntaksista monimutkaisen. Toivomme kuitenkin, että se, miten olemme yrittäneet havainnollistaa kaavoja jaottelemalla sisäiset funktiot, on auttanut sinua ymmärtämään syntaksin hieman helpommin ja helpommin.

Jos löydät muita toimintoja tai kaavoja, jotka meidän olisi pitänyt lisätä tähän, niin kerro meille arvokkailla kommenteillasi. Tai voit vilkaista enemmän informatiivisia ja mielenkiintoisia artikkeleita, jotka liittyvät Excel-funktioihin tällä verkkosivustolla.

Hugh West on erittäin kokenut Excel-kouluttaja ja analyytikko, jolla on yli 10 vuoden kokemus alalta. Hän on koulutukseltaan laskentatoimen ja rahoituksen kandidaatti sekä kauppatieteiden maisteri. Hughilla on intohimo opettamiseen, ja hän on kehittänyt ainutlaatuisen opetusmenetelmän, jota on helppo seurata ja ymmärtää. Hänen asiantuntemuksensa Excelistä on auttanut tuhansia opiskelijoita ja ammattilaisia ​​maailmanlaajuisesti parantamaan taitojaan ja menestymään urallaan. Blogissaan Hugh jakaa tietämyksensä maailman kanssa tarjoamalla ilmaisia ​​Excel-opetusohjelmia ja verkkokoulutusta auttaakseen yksilöitä ja yrityksiä saavuttamaan täyden potentiaalinsa.