Cuprins
Deși Microsoft nu a furnizat o formulă sau o sintaxă directă pentru a extrage numai numere din celula Excel, putem încorpora o gamă largă de Formule Excel pentru a realiza o singură funcție care să poată fi utilizată pentru a extrage numai numere sau cifre din celulele Excel. În acest articol, vom încerca să arătăm și să explicăm în detaliu cum putem scoate din celule numai numere cu ajutorul formulelor corespunzătoare, sub câteva criterii.
Descărcați caietul de practică
Descărcați gratuit cartea de practică pe care am folosit-o pentru a pregăti acest articol. Puteți introduce valorile text cu numere în celulele selectate și găsi imediat rezultatele prin intermediul formulelor încorporate.
Extragerea numerelor din Cell.xlsm
7 moduri eficiente de a extrage numai numere din celula Excel
Va exista un cod VBA, o funcție Excel și cinci formule practice pentru a vă ajuta să extrageți numere dintr-o celulă. Ca în imaginea de mai jos, avem câteva coduri care includ cifre și litere în care cifrele sunt prezente la început. Trebuie să extragem doar acele cifre sau numere.
1. Extragerea numerelor de la începutul unui text
În această primă metodă, vom combina STÂNGA , SUM , LEN , și SUBSTITUTE pentru a extrage numere de la începutul unui șir de text. În primul rând, vom tasta această formulă în celulă, iar apoi, cu ajutorul funcției mânerul de umplere , vom copia formula respectivă în restul celulelor.
Pași:
- În primul rând, introduceți formula în celula C5 .
=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0","1","2","3","4","5","6","7","8","9"},""))))
- În al doilea rând, apăsați Introduceți și veți obține numărul 34 pentru primul cod.
- În al treilea rând, utilizați Mâner de umplere apoi pentru a completa automat toate celelalte celule din coloană C .
🔎 Repartizarea formulei
➤ SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"")
- În acest caz, se va utiliza SUBSTITUTE va găsi cifrele (0-9) consecutiv și, dacă le găsește, va înlocui cifra respectivă în celula B5 cu un caracter gol de fiecare dată. Astfel, funcția va returna ca fiind - {"34DTXRF", "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 determină numărul de caractere dintr-un șir de caractere. Deci, aici, funcția LEN va număra toate caracterele găsite individual în texte prin intermediul funcției SUBSTITUTE Valorile rezultate vor fi, în cazul nostru, {7,7,7,7,6,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″},""))))
- Acum, această parte reprezintă scăderea din numărul de caractere din celulă B5 la toate celelalte numere de caractere găsite individual în secțiunea anterioară a formulei. Deci, aici valorile rezultate vor fi - {0,0,0,0,1,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 va însuma pur și simplu toate valorile scăzute găsite & astfel, rezultatul va fi aici, 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″},""))))
- Și acum, iată partea finală în care STÂNGA va returna valorile cu un număr exact de caractere din stânga găsite în secțiunea anterioară a formulei. Deoarece am obținut valoarea sumei ca fiind 2, funcția STÂNGA aici va returna doar 34 din text 34DTXRF .
➥ În legătură cu: Cum să separați numerele în Excel folosind formula (5 moduri)
2. Extragerea numerelor din partea dreaptă a unui text
În această secțiune, vom extrage numerele sau cifrele din partea dreaptă a șirului de text. Vom folosi funcția DREAPTA , MIN , și CĂUTARE funcții aici.
Pași:
- Pentru început, în setul nostru de date, ceea ce trebuie să scriem în celula C5 is-
=RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,2,3,4,5,6,7,8,9}, B5& "0123456789")) +1)
- După aceea, apăsați Introduceți și apoi folosiți Mâner de umplere pentru a completa automat restul celulelor.
🔎 Repartizarea formulei
➤ B5& "0123456789″
- Aici, concatenăm valorile din B5 celulă cu 0123456789 prin utilizarea ampersandă (&) între ele și vom obține valoarea rezultată ca- DTXRF340123456789.
➤ SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″)
- Acum, în CĂUTARE va căuta toate cifrele (0-9) una câte una în valoarea rezultată obținută în secțiunea anterioară și va returna pozițiile acestor 10 cifre în caracterele din DTXRF340123456789 Deci, aici valorile noastre rezultate vor fi - {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 este utilizată pentru a găsi cea mai mică cifră sau cel mai mic număr dintr-o matrice. Deci, aici valoarea minimă sau cea mai mică va fi- 6 din matricea {8,9,10,10,6,7,13,14,15,16,17} găsită în secțiunea anterioară a formulei.
➤ LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,6,7,8,9}, B5& "0123456789″))) +1)
- Acum, numărul de caractere din B5 va fi găsit de către LEN Apoi va scădea valoarea 6 (găsită în ultima secțiune) și apoi va returna rezultatul prin adăugarea lui 1. În cazul nostru, valoarea rezultată va fi 2 (7-6+1) .
➤ RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,2,3,4,5,6,7,8,9}, B5& "0123456789″)) +1)
- The DREAPTA va returna numărul specificat de caractere din ultima sau partea dreaptă a unui șir de caractere. Urmând rezultatul găsit prin procesul de scădere din secțiunea anterioară, aici funcția DREAPTA va afișa ultimele 2 caractere din celula B5 , și asta va fi 34 .
Citește mai mult: Cum să separați numerele într-o singură celulă în Excel (5 metode)
3. Extragerea numerelor din orice parte a unui șir de text
Acum, iată o soluție amplă pentru toate cazurile. Această metodă va extrage numere sau cifre din orice poziție a unui șir de text. Mai mult, vom folosi TEXTJOIN , IFERROR , INDIRECT , MID și ROW în această metodă.
Pași:
- În primul rând, introduceți formula în celula de destinație după cum urmează-
=TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5)))),1)*1),""))))
- Apoi, dacă folosiți Excel 2016 sau o versiune superioară, apoi apăsați Introduceți , în caz contrar apăsați Ctrl+Shift+Introducere pentru a obține rezultatul pentru această formulă de matrice.
- După acest pas, completați automat și alte celule folosind opțiunea Mâner de umplere și ați terminat.
🔎 Repartizarea formulei
➤ INDIRECT("1:"&LEN(B5))
- The INDIRECT este utilizată pentru a stoca o matrice de valori de celule ca text de referință. În acest caz, ampersandă (&) comanda concatenează lungimea caracterelor din celula B5 cu o sintaxă de interval incompletă (1:) .
- Așadar, aici se află INDIRECT va stoca toate numerele între 1 și lungimea caracterelor în celula B5 ca text de referință.
➤ ROW(INDIRECT("1:"&LEN(B5))))
- The ROW indică de obicei numărul de rând al unei celule, dar aici, în INDIRECT funcție, deoarece nu a fost menționată nicio celulă de referință, în acest caz, celula ROW va extrage toate valorile sau numerele din textele de referință stocate în fișierul INDIRECT funcție.
- Acum, pentru prima celulă B5 , valorile rezultate prin aceste ROW și INDIRECT funcțiile vor fi - {1;2;3;4;5;6;7;8;9}.
➤ (MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)),1))
- The MID vă va permite să determinați caracterele din mijlocul unui șir de text, având în vedere o poziție inițială & lungime.
- Așadar, aici, pentru toate cele 9 poziții găsite în secțiunea anterioară, se obține MID va afișa acum toate caracterele, unul câte unul, pentru fiecare poziție & astfel, va returna valorile ca- {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"}.
➤ IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5)))),1)*1),""),")
- Acum, în IFERROR este o funcție logică care va determina dacă un șir de caractere este un număr sau altceva. Dacă nu identifică un șir cu numere sau cifre, atunci va returna valoarea cu o comandă de text definită.
- În cazul nostru, toate valorile găsite în ultima secțiune vor fi înmulțite cu 1, iar atunci când rezultatele sunt returnate ca erori de valoare pentru litere sau valori de text care nu pot fi înmulțite, se vor înmulți valorile IFERROR va converti erorile în șiruri de caractere goale. Astfel, valorile noastre rezultate vor fi: {1;9;"";"";"";"";"";""; 2;"";"";""}.
➤ =TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5)))),1)*1),""))))
- Și acum partea finală va fi executată prin intermediul TEXTJOIN Această funcție este utilizată pentru a concatena sau a uni două șiruri de caractere cu un delimitator specificat.
- Deci, valorile rezultate pe care le-am găsit în secțiunea anterioară vor fi acum unite împreună alături de acest lucru TEXTJOIN Și astfel vom obține numărul 192.
Citește mai mult: Cum să extrageți mai multe numere din șiruri în Excel (6 metode)
4. Îmbinarea mai multor funcții pentru a scoate doar numere
Acum, vă vom arăta o altă formulă pentru a extrage doar numere din orice poziție dintr-o celulă Excel. Deși poate părea destul de complexă, vom descompune întreaga formulă și vom încerca să explicăm cu ușurință toate funcțiile compacte. În plus, vom folosi funcția IF , MARE , INDEX , SUMPRODUCT , și ISNUMBER funcții în această formulă.
- Pentru început, introduceți această formulă în celulă C5 Trebuie să înlocuiți referința celulei doar pe baza propriei celule din foaia de calcul și apoi, prin încorporarea acestei formule, veți obține imediat rezultatul așteptat. Și această formulă funcționează perfect în orice versiune de 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),"")
- După aceea, trebuie să apăsați Introduceți numai după ce ați scris întreaga formulă și ați terminat.
🔎 Repartizarea formulei
Înainte de a începe defalcarea acestui masiv & formula compactă, o putem separa în câteva părți, cum ar fi-
=IF(A>0, SUMPRODUCT(B 1 *C 1 , B 2 *C 2 , ..........B n C n ),"")
Această sintaxă înseamnă că dacă A este mai mare decât 0, atunci toate produsele lui B n și C n se vor aduna până la rezultatul final. Și dacă A nu este mai mare decât 0, atunci rezultatul va fi o celulă goală sau goală.
- 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),"""
Defalcarea părții 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"}, "")
- The SUBSTITUTE funcția va găsi toate cifrele (0-9) una câte una în text 19 DDX2MN de fiecare dată și va înlocui cifrele respective cu un șir gol în pozițiile cifrelor.
- Astfel, valorile rezultate într-o matrice vor fi - {"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"}, ""))
- The LEN va număra acum numărul de caractere din toate valorile șirurilor de caractere obținute în secțiunea anterioară. Astfel, această funcție va returna ca fiind - {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"}, ""))
- Acum, în această parte a formulei, un număr de caractere din celula B5 va scădea toate numerele găsite în secțiunea precedentă. Valorile rezultate vor fi atunci - {0,1,1,1,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"}, "")))))
- Cu ajutorul SUM valorile din interiorul tabloului găsit în ultima secțiune se vor aduna până la 3 (0+1+1+0+0+0+0+0+0+0+0+0+1).
- Așadar, conform primei părți a formulei noastre, A>0 (3>0) Acum, vom trece la următoarea parte a defalcării.
Defalcarea părții 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))
- The INDIRECT de aici va stoca valorile șirurilor de caractere ca referință la matrice. În interiorul parantezei, ampersandă (&) comanda se va alătura numărului de caractere găsite în celula B5 cu sintaxa "Range of cells". Aceasta înseamnă că, de la 1 la numărul de caractere definite, fiecare dintre acestea va fi stocat sub forma unei referințe de matrice.
➤ ROW(INDIRECT("$1:$"&LEN(B5))))
- Acum, acest ROW va extrage toate numerele din matrice și valorile rezultate pentru celula B5 va fi - {1;2;3;3;4;5;6;7;8;9}.
➤ MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)))),1)
- În această parte a formulei, se utilizează MID va exprima toate caracterele din celula B5 pe baza tuturor pozițiilor găsite ca numere în secțiunea anterioară. Astfel, valorile extrase vor fi găsite după această parte - {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"}.
➤ ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)))),1)))
- Ca ISNUMBER este o funcție logică, aceasta va determina individual dacă valorile găsite în secțiunea precedentă sunt sau nu șiruri de numere. Dacă da, atunci va returna ca fiind ADEVĂRAT , în caz contrar, se va afișa ca FALSE .
- Deci, în cazul nostru, rezultatul va fi - {TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE}.
➤ INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))*ROW(INDIRECT("$1:$"&LEN(B5))),0),0)
- Dacă observați în interiorul funcției de mai sus, o cratimă dublă, cunoscută sub numele de Dublu unitar Acesta este utilizat pentru a converti toate valorile logice în șiruri de numere. 1(TRUE) sau 0(FALSE) . acum, în INDEX va returna acest rezultat ca fiind - {1;1;0;0;0;0;0;0;1;0;0;0}.
- După aceea, valorile rezultate vor fi înmulțite cu valorile obținute de la ROW în interiorul matricei, iar rezultatul va fi - {1;2;0;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 MARE va rearanja acum cele mai mari valori din tablou în funcție de pozițiile bazate pe numerele găsite în ROW funcțiile. & valorile noastre rezultate pentru această secțiune a formulei vor fi- {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))
- Acum, această parte a funcției va concatena 0 cu textele din celula B5 Apoi se va adăuga 1 individual cu toate numerele găsite în ultima secțiune și arată caracterele din B5 celulă pe baza pozițiilor numerice definite.
- Așadar, rezultatul nostru din această secțiune va fi - {"2″; "9″; "1″; "0″; "0″; "0″; "0″; "0″; "0″; "0″; "0"}.
Defalcarea părții C = (10^ROW(INDIRECT("$1:$"&LEN(B5))))/10),"")
- Această parte va determina puterile lui 10 & le va stoca în interiorul tabloului. Cifrele puterilor sunt numerele găsite din ROW funcție anterior.
- Această parte a formulei va returna valorile ca- {1;10;100;100;1000;10000;100000;1000000;10000000;100000000}.
Înmulțirea lui B n și C n
- Acum, valorile rezultate din ultimele două defalcări majore ale lui B și C vor fi înmulțite în interiorul tabloului. Apoi, produsele obținute în urma înmulțirii vor fi - {2;90;100;0;0;0;0;0;0;0;0;0;0}.
- Și în cele din urmă, în SUMPRODUCT va însuma aceste valori găsite în matrice. Astfel, rezultatul final va fi 192 (2+90+100+0+0+0+0+0+0) , care reprezintă numerele extrase din celula B5 .
Citește mai mult: Cum să separați textul și numerele în Excel (4 moduri simple)
5. Extragerea numerelor de cinci cifre din șiruri de caractere
Vom folosi o altă formulă pentru a extrage numere de cinci cifre din orice parte a unui șir de caractere în Excel. Vom folosi formula CONCAT și SECVENȚĂ În plus, am modificat ușor setul de date pentru această metodă.
Pași:
- În primul rând, selectați intervalul de celule C5:C12 .
- În al doilea rând, introduceți următoarea formulă.
=CONCAT(IFERROR(0+MID(B5,SEQUENCE(LEN(B5))),1),"")))
- În cele din urmă, apăsați Ctrl+Introducere .
🔎 Repartizarea formulei
- LEN(B5)
- Ieșire: 11 .
- Această funcție returnează lungimea șirului de caractere.
- SECVENȚĂ(11)
- Output: {1;2;3;4;5;6;7;8;9;10;11} .
- Această funcție returnează primele unsprezece numere.
- MID(B5,{1;2;3;4;5;6;7;8;9;10;11},1)
- Ieșire: {"1″; "9″;" ";" "; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″″} .
- Folosind această parte, obținem caracterele individuale din șirul de caractere.
- 0+{"1″; "9″;" "; "D"; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″″}
- Ieșire: {1;9;#VALOARE!;#VALOARE!;#VALOARE!;#VALOARE!;#VALOARE!;#VALOARE!;#VALOARE!;#VALOARE!;3;3} .
- Atunci când adăugăm zero la un șir de caractere, se va returna o eroare.
- IFERROR({1;9;9;#VALOARE!;#VALOARE!;#VALOARE!;#VALOARE!;#VALOARE!;2;#VALOARE!;#VALOARE!;#VALOARE!;3;3},"")
- Ieșire: {1;9;"";"";"";"";"";"";2;"";"";"";3;3} .
- Obținem un gol pentru toate valorile de eroare.
- CONCAT({1;9;"";"";"";"";"";"";2;"";"";"";3;3})
- Ieșire: 19233 .
- În cele din urmă, adunăm toate valorile pentru a extrage doar numere de cinci cifre.
6. Utilizarea umpluturii flash pentru a extrage numere dintr-un interval
Utilizarea la Umplere flash caracteristică este mai ușoară și mai simplă decât orice altă metodă menționată mai sus. Vom extrage numere din orice poziție în șirurile de text. Pentru a executa această metodă în mod corespunzător, trebuie să ajutăm Excel să găsească modelul valorilor celulelor dintr-o coloană sau dintr-un rând, efectuând extracția doar pentru primele două valori.
Pași:
- Pentru început, introduceți manual numerele în celula C5 .
- Apoi, începeți să tastați numerele din celula B6 în celulă C6 iar Excel va recunoaște automat modelul.
- În cele din urmă, apăsați Introduceți .
Note: Această metodă are unele dezavantaje, motiv pentru care nu este recomandată pentru toate cazurile în care trebuie să extrageți numere din șiruri de text. Metoda Umplere flash urmează, de obicei, un tipar din celulele unei coloane sau ale unui interval. Astfel, primele 2 sau 3 extrageri sau calcule trebuie făcute manual pentru a ajuta Excel să absoarbă tiparul comun al valorilor rezultate. Dar, uneori, nu urmează exact tiparul de care avem nevoie și, astfel, își va urma propriul tipar și vă va oferi un rezultat nepotrivit.
De exemplu, dacă ar trebui să extragem două zerouri (00) din datele date, va afișa doar un singur zero, nu două. Apoi, dacă doriți să extrageți numere de la începutul sau de la ultimele poziții dintr-o celulă, va extrage și valorile textului, împreună cu numerele.
Citește mai mult: Cum să extrageți numere după un anumit text în Excel (2 moduri adecvate)
7. Aplicarea codului VBA pentru a extrage numai numere din celula Excel
Dacă sunteți interesat să utilizați Excel VBA Macro pentru a extrage numere doar din celule, atunci ar trebui să urmați pașii de mai jos. Vă vom arăta cum să introduceți codul în fereastra Modul VBA Acest cod va cere utilizatorului să specifice intervalele de celule de intrare și de ieșire.
Pași:
- În primul rând, apăsați ALT+F11 pentru a deschide fereastra VBA fereastră.
- Apoi, de la Introduceți selectați fila Modul Va apărea o nouă fereastră de modul în care veți introduce codurile.
- În al treilea rând, în interiorul modulului tău, lipește următoarele coduri după copiere.
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 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
- După aceea, apăsați F5 pentru a executa codul. Apare o casetă de dialog numită " Selectarea datelor de intrare " va apărea.
- Apoi, selectați toate celulele de text (de ex. B5:B12 ) și apăsați OK .
- După aceea, apare o altă casetă de dialog numită " Selectarea celulei de ieșire " va apărea o fereastră în care trebuie să selectați o anumită celulă sau un interval de celule pentru a vedea datele sau valorile de ieșire.
- În cele din urmă, selectați intervalul de celule C5:C12 și apăsați Introduceți .
- În consecință, veți vedea numerele extrase din texte deodată. Astfel, vom încheia cele șapte metode rapide de a extrage numere doar din celula Excel.
🔎 Defalcarea codului VBA
➤ Declararea parametrilor
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 DBxName2 As String Dim Iteration As Integer DBxName1 = "Input Data Selection" DBxName2 = "Output cell Selection"
- Aici, în această parte, la început, declarăm toți parametrii noștri ca numere întregi, valori de tip șir de caractere sau intervale de celule. Apoi, dăm numele căsuțelor noastre de dialog cu "Selectarea datelor de intrare" și "Selectarea celulei de ieșire" .
➤ Definirea tipurilor de intrări & ieșiri pentru casetele de dialog
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 = ""
- Acum definim parametrii și tipurile acestora pentru casetele de dialog. Aici, adăugarea lui Type:=8 înseamnă că datele de intrare și de ieșire vor consta în celule de referință sau într-un interval de celule.
- De asemenea, definim că, dacă datele de intrare nu sunt găsite, atunci subrutina se va opri. Prin menționarea acestui macro, subrutina nu se va întrerupe din cauza lipsei datelor, ci se va opri din funcționare.
➤ Combinarea funcțiilor din interiorul buclelor de cod pentru iterații
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
- În cele din urmă, aceasta este cea mai importantă parte, în care aplicăm funcțiile sau formulele pe care trebuie să le atribuim textelor pentru a găsi valorile rezultate din șiruri.
- Unul dintre avantajele majore ale codificării unei funcții pentru Excel este că nu este necesar să tastați o formulă mare, așa cum trebuia să facem în metodele anterioare, deoarece VBA are comenzi încorporate pentru a utiliza buclele For sau While, unde iterația pentru fiecare detaliu dintr-un șir de text poate fi executată fără probleme.
Citește mai mult: Cum să separați numerele de text în Excel VBA (3 metode)
Concluzie
Ți-am arătat 7 metode ușoare pentru a extrage numai numere dintr-o celulă Excel. Extragerea doar a numerelor dintr-un șir de text nu este atât de simplă pe cât pare, deoarece necesită o combinație de mai multe funcții, ceea ce face ca formula sau sintaxa finală să fie complicată. Dar sperăm că modul în care am încercat să ilustrăm formulele prin descompunerea funcțiilor interne v-a ajutat să înțelegeți sintaxa cu un pic de confort și ușurință.
Dacă găsiți alte funcții sau formule pe care ar fi trebuit să le adăugăm aici, vă rugăm să ne anunțați prin comentariile dvs. valoroase. Sau puteți arunca o privire la articolele noastre mai informative și interesante legate de funcțiile Excel de pe acest site.