Excel: Ekstraktu nombron el teksta ĉeno

  • Kundividu Ĉi Tion
Michael Brown

La lernilo montras kiel ĉerpi nombron el diversaj tekstaj ĉenoj en Excel uzante formulojn kaj la Eltiri ilon.

Kiam temas pri ĉerpi parton de teksta ĉeno de difinita longo. , Excel provizas tri Substring-funkciojn (Maldekstre, Dekstre kaj Meze) por rapide trakti la taskon. Kiam temas pri ĉerpi nombrojn el alfanombra ĉeno, Microsoft Excel provizas... nenion.

Por akiri nombron el ĉeno en Excel, necesas iom da eltrovemo, iom da pacienco kaj amaso da malsamaj funkcioj. nestis unu en la alian. Aŭ, vi povas ruli la Ekstraktan ilon kaj fari la laboron per musklako. Malsupre vi trovos plenajn detalojn pri ambaŭ metodoj.

    Kiel ĉerpi nombron el la fino de tekstoĉeno

    Kiam vi havas kolumnon de alfanombraj ĉenoj kie nombro venas post teksto, vi povas uzi la jenan formulon por akiri ĝin.

    DEKSTRA( ĉelo, LEN( ĉelo) - MAX (IF(ISNUMERO(MEZONO( ĉelo>, VICO(NEDIREKTA("1:"&LEN( ĉelo))), 1) *1)=FALSA, VICO(INDIRKTA ("1:"&LEN( ĉelo))), 0)))

    Ni iom poste priparolos la logikon de la formulo. Nuntempe, simple anstataŭigu ĉelon per referenco al la ĉelo enhavanta la originan ĉenon (A2 en nia kazo), kaj enigu la formulon en ajna malplena ĉelo en la sama vico, diru en B2:

    =RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)))

    Ĉi tiu formulo ricevas nombron nur de la fino. Se ĉeno ankaŭ havas nombrojn en la komenco aŭ en la mezo, ili estasignorita:

    La eltiro estas farata per la RIGHT-funkcio, kiu apartenas al la kategorio de Tekstaj funkcioj. La eligo de ĉi tiu funkcio ĉiam estas teksto . En nia kazo, la rezulto estas numera subĉeno , kiu laŭ Excel ankaŭ estas teksto, ne nombro.

    Se vi bezonas, ke la rezulto estu nombro (kiun vi povas uzi en pliaj kalkuloj), tiam envolvu la formulon en la funkcion VALORO aŭ faru aritmetikan operacion, kiu ne ŝanĝas la rezulton, ekzemple, multipliku per 1 aŭ aldonu 0. Por kapti erarojn en la ĉenoj, kiuj ne enhavas ununura nombro, uzu la funkcion IFERROR. Ekzemple:

    =IFERROR(VALUE(RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1)*1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)))), "")

    =IFERROR(RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0))) +0, "")

    Notu. En Dynamic Array Excel (Oficejo 365 kaj 2021), vi enigas la formulon en la kutima maniero per la Enigu klavon. En Excel 2019 kaj pli frue, ĝi funkcias nur kiel tabelformulo, do memoru premi Ctrl + Shift + Enter por kompletigi ĝin.

    Kiel ĉi tiu formulo funkcias:

    Por ĉerpi nombron el alfanombra ĉeno, la unua afero, kiun vi devas scii, estas kie komenci la eltiron. La pozicio de la lasta ne-nombra signo en ĉeno estas determinita helpe de ĉi tiu malfacila formulo:

    MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(). A2))), 1)*1)=FALSA, VICO(INDIRECT("1:"&LEN(A2))), 0))

    Por kompreni la logikon, ni esploru ĝin de interne :

    La kombinaĵo ROW(INDIRECT("1:"&LEN(A2)))kreas sinsekvon de nombroj respondantaj al la totalo de signoj en la fonta ĉeno (A2), kaj ni servas ĉi tiujn sinsekvajn nombrojn al MID kiel komencajn nombrojn:

    MID(A2, {1;2;3;4; ;5;6;7;8}, 1)

    La MID-funkcio tiras ĉiun individuan signon el A2 kaj resendas ilin kiel tabelo:

    {"0";"5";" -";"E";"C";"-";"0";"1"}

    Ĉar MID estas teksta funkcio, ĝia eligo ĉiam estas teksto (kiel vi povas rimarki, ĉiuj signoj. estas enmetitaj inter citiloj). Por turni nombrajn en nombrojn, ni multiplikas la tabelon per 1 (duobla neado --MID() havos la saman efikon). La rezulto de ĉi tiu operacio estas tabelo de nombroj kaj #VALORO! eraroj reprezentantaj ne-nombrajn signojn:

    ISNUMBER({0;5;#VALOR!;#VALOR!;#VALOR!;#VALOR!;0;1})

    La funkcio ISNUMERO taksas ĉiun elementon de la tabelo kaj donas ĝian verdikton en formo de Buleaj valoroj - VERA por nombroj, FALSA por io alia:

    {VERA;VERA;FALSA;FALSA;FALSA;FALSA;VERA;VERA

    Ĉi tiu tabelo iras al la logika testo de la IF-funkcio, kie ĉiu elemento de la tabelo estas komparata kontraŭ FALSA:

    IF({VERA;VERA;FALSA;FALSA;FALSA;FALSA;VERA). ;VERA}=FALSA, VICO(INDIRKTA("1:"&LEN(A2))), 0)

    Por ĉiu FALSO (ne-nombra valoro), alia VICO(INDIREKTA()) redonas funkcion ĝia relativa pozicio en la ŝnuro. Por ĉiu VERA (numera valoro), nulo estas resendita. La rezulta tabelo aspektas kielsekvas:

    {0;0;3;4;5;6;0;0}

    La cetero estas facila. La MAX-funkcio trovas la plej altan nombron en la supra tabelo, kiu estas la pozicio de la lasta ne-nombra valoro en la ĉeno (6 en nia kazo). Simple, subtrahi tiun pozicion de la tuta longo de la ĉeno resendita de LEN, kaj pasu la rezulton al DEKSTRA por sciigi al ĝi kiom da signoj eltiri el la dekstra flanko de la ĉeno:

    RIGHT(A2, LEN (A2) - 6)

    Fine!

    Kiel ĉerpi nombron de la komenco de teksta ĉeno

    Se vi laboras kun registroj, kie teksto aperas post nombro, vi povas ĉerpi numeron de la komenco de ĉeno uzante ĉi tiun ĝeneralan formulon:

    LEFT( ĉelo, MATCH(FALSE, ISNUMBER(MID( ĉelo, ROW(INDIRECT("1: "&LEN( ĉelo)+1)), 1) *1), 0) -1)

    Kun la origina ĉeno en A2, uzu la jenan formulon por akiri nombron:

    =LEFT(A2, MATCH(FALSE, ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2)+1)), 1) *1), 0) -1)

    Ne gravas kiom da ciferoj estas meze aŭ fino, oni ĉerpas nur la komencan nombron:

    Noto. En Excel 365 kaj Excel 2021, pro subteno por dinamikaj tabeloj, regula formulo funkcias bone. En Excel 2019 kaj pli frue, vi devus premi Ctrl + Shift + Enter por eksplicite fari ĝin tabelformulo .

    Kiel ĉi tiu formulo funkcias:

    Ĉi tie, ni denove uzas la kombinaĵon de ROW, INDIREKTA kaj LEN-funkcioj por krei sinsekvon de nombroj egalaj al la totalo de signoj en la fonta ĉeno plus 1 (la rolo de tiuplia signo klariĝos iom poste).

    ROW(INDIRECT("1:"&LEN(A2)+1))

    MID kaj ISNUMBER faras la saman laboron kiel en la antaŭa ekzemplo - MID tiras individuajn signojn kaj ISNUMBER konvertas ilin al la logikaj valoroj. La rezulta tabelo de VERA kaj FALSA iras al la MATCH-funkcio kiel serĉa tabelo:

    MATCH(FALSE, {VERA;VERA;FALSE;FALSE;FALSE;FALSE;VERA;VERA;FALSE}, 0)

    MATCH kalkulas relativan pozicion de la unua FALSO, donante al ni la pozicion de la unua ne-nombra signo en la ĉeno (3 en A2). Por ĉerpi la antaŭajn nombrojn, ni subtrahas 1 de la pozicio de la unua teksta signo kaj servas la diferencon al la argumento num_chars de la funkcio LEFT:

    LEFT(A2, 3-1)

    Nun, revenu al "kroma" signo en la sinsekvo generita de ROW(INDIRECT()+1)). Kiel vi jam scias, ĉi tiu sinsekvo disponigas la deirpunktojn por la MID-funkcio. Sen +1, MID eltirus ekzakte tiom da signoj kiom estas en la origina ĉeno. Se la ĉeno enhavas nur ciferojn, ISNUMBER liveros nur VERajn dum MATCH bezonas almenaŭ unu FALSO. Por certigi tion, ni aldonas unu plian karakteron al la tuta longo de la ĉeno, kiun la MID-funkcio konvertiĝus al malplena ĉeno. Ekzemple, en B7, MID resendas ĉi tiun tabelon:

    {"1";"2";"3";"4";""}

    Noto. Kiel estas la kazo kun la RIGHT funkcio, LEFT ankaŭ liveras numerasubĉeno , kiu estas teknike teksto, ne nombro. Por ricevi la rezulton kiel nombron prefere ol nombra ĉeno, nestu la formulon en la funkcio VALORE aŭ multipliku la rezulton per 1 kiel montrite en la unua ekzemplo.

    Kiel akiri nombron el iu ajn pozicio en ĉeno

    Se via tasko implicas ĉerpi nombron de ie ajn en ĉeno, vi povas uzi la jenan mensan formulon publikigitan sur MrExcel-forumo:

    =SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(--MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1)) * ROW(INDIRECT("1:"&LEN(A2))), 0), ROW(INDIRECT("1:"&LEN(A2))))+1, 1) * 10^ROW(INDIRECT("1:"&LEN(A2)))/10)

    Kie A2 estas la originala tekstoĉeno.

    Malkonstrui ĉi tiun formulon postulus apartan artikolon, do vi povas simple kopii ĝin al via laborfolio por certigi, ke ĝi vere funkcias :)

    Ekzameninte la rezultojn, vi tamen povas rimarki unu sensignifan malavantaĝon - se la fonta ĉeno ne enhavas nombron, la formulo donas nulon, kiel en la vico 6 en la supra ekrankopio. Por ripari ĉi tion, vi povas envolvi la formulon en la deklaron IF, kies logika testo kontrolas ĉu la fonta ĉeno enhavas iun nombron. Se jes, la formulo ĉerpas la nombron, alie liveras malplenan ĉenon:

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

    Kiel montrite en la ekrankopio malsupre, la plibonigita formulo funkcias bele (fedulon al Alex, nia Excel-guruo, por ĉi tiu plibonigo):

    Malkiel en ĉiuj antaŭaj ekzemploj, la rezulto de ĉi tiu formulo estas numero . Por certigi ĉi tion, nur rimarku la dekstre vicigitajn valorojn en kolumno B kaj detranĉitajn antaŭajn nulojn.

    Konsilo. En Excel 365 -Excel 2019, ekzistas multe pli simpla solvo kun la helpo de la funkcio TEXTJOIN. Bonvolu vidi Kiel forigi tekston kaj konservi ciferojn.

    Eltiri nombron el teksta ĉeno kun Ultimate Suite

    Kiel vi ĵus vidis, ne ekzistas bagatela Excel-formulo por tiri nombron el teksta ĉeno. Se vi havas malfacilaĵojn por kompreni la formulojn aŭ ĝustigi ilin por viaj datumaj aroj, vi eble ŝatos ĉi tiun simplan manieron akiri numeron el ĉeno en Excel.

    Kun nia Ultimate Suite aldonita al via Excel-rubando, jen kiel vi povas rapide preni numeron el iu ajn alfanombra ĉeno:

    1. Iru al la langeto Ablebits Data > Teksto , kaj alklaku Eltiri :

    2. Elektu ĉiujn ĉelojn kun la fontaj ĉenoj.
    3. En la panelo de la ilo Ekstrakti, elektu la radiobutonon Eltiri nombrojn .
    4. Se vi volas, ke la rezultoj estu formuloj aŭ valoroj, elektu la skatolon Enmeti kiel formulon aŭ lasu ĝin neelektita (defaŭlte).

      Mia konsilo estas elekti ĉi tiun skatolon se vi volas, ke la ĉerpitaj nombroj aŭtomate ĝisdatiĝos tuj kiam iuj ŝanĝoj estas faritaj al la fontaj ĉenoj. Se vi volas, ke la rezultoj estu sendependaj de la originalaj ŝnuroj (ekz. se vi planas forigi la fontajn datumojn poste), tiam ne elektu ĉi tiun skatolon.

    5. Alklaku la butonon Enmeti Rezultojn . Farite!

    Kiel en la antaŭa ekzemplo, la rezultoj de laeltiro estas nombroj , kio signifas, ke vi rajtas kalkuli, sumi, averaĝi aŭ fari iujn ajn aliajn kalkulojn per ili.

    En ĉi tiu ekzemplo, ni elektis enmeti la rezultojn kiel valoroj , kaj la aldonaĵo faris ĝuste tion, kion oni petis:

    Se la markobutono Enmeti kiel formulon estis elektita, vi' d observu formulon en la formulbreto. Ĉu vi scivolas scii kiu? Nur elŝutu la provon de Ultimate Suite kaj vidu mem :)

    Haveblaj elŝutoj

    Excel Extract Number - ekzempla laborlibro (.xlsx-dosiero)

    Ultimate Suite - provversio (.exe). dosiero)

    Michael Brown estas diligenta teknologia entuziasmulo kun pasio por simpligi kompleksajn procezojn uzante programarajn ilojn. Kun pli ol jardeko da sperto en la teknologia industrio, li perfektigis siajn kapablojn en Microsoft Excel kaj Outlook, same kiel Google Sheets kaj Docs. La blogo de Mikaelo estas dediĉita al kunhavigi siajn sciojn kaj kompetentecon kun aliaj, provizante facilajn sekvajn konsiletojn kaj lernilojn por plibonigi produktivecon kaj efikecon. Ĉu vi estas sperta profesiulo aŭ komencanto, la blogo de Mikaelo ofertas valorajn komprenojn kaj praktikajn konsilojn por eltiri la plej multajn el ĉi tiuj esencaj programaj iloj.