Съдържание
Въпреки че Microsoft не е предоставила пряка формула или синтаксис за извличане само на числа от клетката на Excel, можем да включим широк набор от Формули на Excel за да направите една функция, която може да се използва за извличане само на числа или цифри от клетките на Excel. В тази статия ще се опитаме да покажем и обясним подробно как можем да извличаме само числа от клетките с подходящи формули при няколко критерия.
Изтегляне на работна тетрадка за практика
Изтеглете безплатно учебника за упражнения, който използвахме, за да подготвим тази статия. Можете да въвеждате текстови стойности с числа в избраните клетки и да намирате резултатите веднага чрез вградените формули.
Извличане на числа от Cell.xlsm
7 ефективни начина за извличане само на числа от клетка на Excel
Ще има един код VBA, една функция на Excel и пет практически формули, които ще ви помогнат да извлечете числа от клетка. Както на снимката по-долу, имаме някои кодове, включващи цифри и букви, в които цифрите присъстват в началото. Трябва да извлечем само тези цифри или числа.
1. Извличане на числа от началото на текста
В този първи метод ще комбинираме LEFT , SUM , LEN , и ЗАМЕСТВАНЕ за извличане на числа от началото на текстов низ. Първо ще въведем тази формула в клетката, а след това с помощта на дръжката за пълнене , ще копираме тази формула в останалите клетки.
Стъпки:
- Първо, въведете формулата в клетката C5 .
=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0","1","2","3","4","5","6","7","8","9"},""))))
- Второ, натиснете Въведете и ще получите числото 34 за първия код.
- Трето, използвайте Дръжка за пълнене след това за автоматично попълване на всички останали клетки в колоната C .
🔎 Разбивка на формулата
➤ SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"")
- Тук ЗАМЕСТВАНЕ ще намери последователно цифрите (0-9) и ако ги намери, ще замени тази цифра в клетката B5 Така че функцията ще върне {"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″},"")
- Сайтът LEN определя броя на символите в даден низ. Така че тук функцията LEN ще преброи всички символи, които се намират в текстовете чрез ЗАМЕСТВАНЕ Получените стойности в нашия случай ще бъдат {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″},""))
- Сега тази част е изваждането от броя на символите в клетката B5 към всички останали числа на знаците, намерени поотделно в предишния раздел на формулата. Така че тук резултатните стойности ще бъдат - {0,0,0,1,1,0,0,0,0,0,0,0}.
➤ SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"")))
- Сайтът SUM След това функцията просто ще събере всички извадени стойности, намерени & така че резултатът ще бъде тук, 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″},""))))
- И сега ето последната част, в която LEFT ще върне стойностите с точен брой знаци отляво, намерени в предишната част на формулата. Тъй като получихме стойност на сумата 2, функцията LEFT функцията тук ще върне само 34 от текста 34DTXRF .
➥ Свързани: Как да разделите числата в Excel с помощта на формула (5 начина)
2. Извличане на числа от дясната страна на текст
В този раздел ще извлечем числата или цифрите от дясната страна на текстовия низ. Ще използваме функцията ПРАВИЛНО , MIN , и ТЪРСЕНЕ НА функции тук.
Стъпки:
- Като начало, в нашия набор от данни това, което трябва да въведем в клетката C5 е-
=RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789") +1)
- След това натиснете Въведете и след това използвайте Дръжка за пълнене за автоматично попълване на останалите клетки.
🔎 Разбивка на формулата
➤ B5& "0123456789″
- Тук конкатенираме стойности в B5 клетка с 0123456789 като използвате амперсанд (&) между тях и ще получим резултантната стойност като DTXRF340123456789.
➤ SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″)
- Сега ТЪРСЕНЕ НА функцията ще търси всички цифри (0-9) една по една в получената от предишния раздел стойност и ще върне позициите на тези 10 цифри в символите на DTXRF340123456789 Така че тук нашите резултативни стойности ще бъдат: {8,9,10,6,7,13,14,15,16,17}.
➤ MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″))
- Сайтът MIN Функцията се използва за намиране на най-ниската цифра или число в масив. Така че тук минималната или най-ниската стойност ще бъде- 6 от масива {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)
- Сега броят на символите в B5 ще бъде намерен от LEN След това ще извади стойността 6(намерена в последния раздел) и ще върне резултата, като добави 1. В нашия случай резултантната стойност ще бъде 2 (7-6+1) .
➤ RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″) +1)
- Сайтът ПРАВИЛНО функцията ще върне определения брой символи от последната или дясната страна на даден низ. След резултата, намерен чрез процеса на изваждане в предишния раздел, тук функцията ПРАВИЛНО ще покаже последните 2 символа от клетката B5 и това ще бъде 34 .
Прочетете още: Как да разделите числата в една клетка в Excel (5 метода)
3. Извличане на числа от всяка част на текстов низ
Сега ви предлагаме едно широкообхватно решение за всички случаи. Този метод ще извлича числа или цифри от всяка позиция в текстов низ. Освен това ще използваме TEXTJOIN , IFERROR , ИНДИРЕКТЕН , MID и РЕД функции в този метод.
Стъпки:
- Първо, въведете формулата в целевата клетка по следния начин.
=TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),""))
- След това, ако използвате Excel 2016 или по-висока версия, след което натиснете Въведете , в противен случай натиснете Ctrl+Shift+Enter за да получите резултата за тази формула на масива.
- След тази стъпка автоматично попълнете други клетки с помощта на Дръжка за пълнене и сте готови.
🔎 Разбивка на формулата
➤ INDIRECT("1:"&LEN(B5))
- Сайтът ИНДИРЕКТНО се използва за съхраняване на масив от стойности на клетките като референтен текст. Тук амперсандът (&) конкатенира дължината на символите на клетката B5 с непълен синтаксис на обхвата (1:) .
- И така, тук ИНДИРЕКТНО ще съхрани всички числа между 1 и дължината на символите в клетката B5 като справочен текст.
➤ ROW(INDIRECT("1:"&LEN(B5)))
- Сайтът РЕД обикновено посочва номера на реда на клетката. Но тук в ИНДИРЕКТЕН функция, тъй като не е посочена референтна клетка, в този случай, the РЕД ще извлече всички стойности или числа от референтните текстове, съхранени в ИНДИРЕКТЕН функция.
- Сега за първата клетка B5 , резултатните стойности чрез тези РЕД и ИНДИРЕКТНО функциите ще бъдат - {1;2;3;4;5;6;7;8;9}.
➤ (MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1))
- Сайтът MID функцията ще ви позволи да определите символите от средата на текстов низ при зададена начална позиция & дължина.
- И така, тук за всички 9 позиции, открити в предишния раздел, MID Сега функцията ще покаже всички символи един по един за всяка позиция & по този начин ще върне стойностите като - {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"}.
➤ IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),"")
- Сега IFERROR е логическа функция, която ще определи дали даден низ е число или нещо друго. Ако не идентифицира низ с числа или цифри, тогава ще върне стойността с определена текстова команда.
- В нашия случай всички стойности, намерени в последния раздел, ще бъдат умножени по 1, а когато резултатите се връщат като грешки за букви или текстови стойности, които не могат да бъдат умножени, техните IFERROR Функцията ще преобразува грешките в празни низове. Така че нашите резултатни стойности ще бъдат {1;9;"";"";"";"";""; 2;"";""}.
➤ =TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),""))
- И сега последната част ще бъде изпълнена чрез TEXTJOIN Тази функция се използва за конкатенация или обединяване на два низа с определен разделител.
- И така, резултатните стойности, които открихме в предходния раздел, сега ще бъдат обединени заедно с тази TEXTJOIN И така ще получим числото 192.
Прочетете още: Как да извлечете няколко числа от низ в Excel (6 метода)
4. Влагане на множество функции за извеждане само на числа
Сега ще ви покажем още една формула за извличане само на числа от всяка позиция от клетка на Excel. Въпреки че може да изглежда доста сложна, ние ще разбием цялата формула и ще се опитаме да обясним с лекота всички компактни функции. Освен това ще използваме IF , ГОЛЯМ , INDEX , SUMPRODUCT , и ISNUMBER функции в тази формула.
- За начало въведете тази формула в клетката C5 . Трябва да замените препратката към клетката само въз основа на собствената си клетка в електронната таблица и след това, като вградите тази формула, веднага ще получите очаквания резултат. И тази формула работи перфектно във всяка версия на 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),"")
- След това трябва да натиснете Въведете само след като въведете цялата формула и сте готови.
🔎 Разбивка на формулата
Преди да започнем разбивката на тази масивна & компактна формула, можем да я разделим на някои части като-
=IF(A>0, SUMPRODUCT(B 1 *C 1 , B 2 *C 2 , ..........B n C n ),"")
Този синтаксис означава, че ако A е по-голямо от 0, тогава всички произведения на B n и C n ще доведе до крайния резултат. И ако A не е по-голяма от 0, резултатът ще се върне като празна или непопълнена клетка.
- 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),""
Разбивка на част А = 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"}, "")
- Сайтът ЗАМЕСТВАНЕ функцията ще намери всички цифри (0-9) една по една в текста 19 DDX2MN всеки път и ще заменя тези цифри с празен низ на местата на цифрите.
- По този начин получените стойности в масива ще бъдат - {"19 DDX2MN", "9 DDX2MN", "19 DDXMN", "19 DDX2MN", "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"}, ""))
- Сайтът LEN Сега функцията ще преброи броя на символите във всички стойности на символния низ, получени от предишния раздел. Така тази функция ще върне {9,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"}, "")
- Сега в тази част на формулата редица символи в клетката B5 Ще извадите всички числа, намерени в предходния раздел. Получените стойности ще бъдат {0,1,1,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"}, "")))
- С помощта на SUM функцията, стойностите в масива, намерен в последния раздел, ще се съберат на 3 (0+1+1+0+0+0+0+0+0+0+1).
- И така, според първата част на нашата формула, A>0 (3>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)
➤ INDIRECT("$1:$"&LEN(B5))
- Сайтът ИНДИРЕКТНО ще съхрани стойностите на низовете като препратка към масива. Вътре в скобите се поставя амперсандът (&) ще присъедини броя на символите, намерени в клетката B5 Това означава, че от 1 до определения брой символи всеки от тях ще бъде съхранен като референция към масив.
➤ РЕД(INDIRECT("$1:$"&LEN(B5))
- Сега, това РЕД функцията ще извлече всички числа от масива и получените стойности за клетката B5 ще бъде - {1;2;3;4;5;6;7;8;9}.
➤ MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1)
- В тази част на формулата MID функцията ще изрази всички символи от клетката B5 Така че извлечените стойности ще бъдат намерени след тази част - {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"}.
➤ ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))
- Като ISNUMBER е логическа функция, тя ще определи поотделно дали стойностите, намерени в предходния раздел, са низове от числа или не. Ако да, тогава ще върне като TRUE , в противен случай ще се покаже като FALSE .
- Така че в нашия случай резултатът ще бъде - {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)
- Ако забележите, че вътре в горната функция е поставен двоен хифен, известен като Двойно едночленни Използва се за преобразуване на всички логически стойности в цифрови низове. 1(TRUE) или 0(FALSE) . Сега INDEX функцията ще върне този резултат като- {1;1;0;0;0;0;0;1;0;0}.
- След това получените стойности ще бъдат умножени по стойностите, получени от РЕД функция в масива и резултатът ще бъде - {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))))
- Сайтът ГОЛЯМ сега функцията ще пренареди най-големите стойности от масива според позициите, основани на числата, намерени в РЕД & нашите резултантни стойности за тази част от формулата ще бъдат - {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)
- Сега тази част от функцията ще конкатенира 0 с текстовете в клетката B5 . След това ще добави 1 поотделно с всички числа, намерени в последния раздел, и покажете символите от B5 клетка въз основа на определените позиции на числата.
- Така че резултатът от този раздел ще бъде - {"2″; "9″; "1″; "0″; "0″; "0″; "0″; "0″; "0″; "0"}.
Разбивка на част C = (10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"")
- Тази част ще определи степента на 10 & съхранява ги в масива. Цифрите на степента са числата, намерени от РЕД функция преди това.
- Тази част от формулата ще върне стойностите като {1;10;100;1000;10000;100000;1000000;10000000;100000000}.
Умножаване на B n и C n
- Сега в масива ще бъдат умножени получените стойности от последните две големи разбивки на B и C. След това продуктите, намерени от умноженията, ще бъдат - {2;90;100;0;0;0;0;0;0;0;0}.
- И накрая. SUMPRODUCT ще събере тези стойности, намерени в масива. Така крайният резултат ще бъде 192 (2+90+100+0+0+0+0+0+0) , което е извлеченото число от клетката B5 .
Прочетете още: Как да разделяме текст и числа в Excel (4 лесни начина)
5. Извличане на петцифрени числа от низ
Ще използваме друга формула за извличане на петцифрени числа от която и да е част на низ в Excel. Ще използваме формулата CONCAT и СЕКВИНЦИЯ Освен това за този метод леко сме променили набора от данни.
Стъпки:
- Първо, изберете обхвата от клетки C5:C12 .
- Второ, въведете следната формула.
=CONCAT(IFERROR(0+MID(B5,SEQUENCE(LEN(B5)),1),""))
- Накрая натиснете Ctrl+Enter .
🔎 Разбивка на формулата
- LEN(B5)
- Изход: 11 .
- Тази функция връща дължината на низа.
- СЕКВИНАЦИЯ(11)
- Output: {1;2;3;4;5;6;7;8;9;10;11} .
- Тази функция връща първите единадесет числа.
- MID(B5,{1;2;3;4;5;6;7;8;9;10;11},1)
- Изход: {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″} .
- Чрез тази част получаваме отделните символи от низа.
- 0+{"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″}
- Изход: {1;9;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;2;#VALUE!;#VALUE!;#VALUE!;3;3} .
- Когато добавим нула към низ, ще се върне грешка.
- IFERROR({1;9;#СТОЙНОСТ!;#СТОЙНОСТ!;#СТОЙНОСТ!;#СТОЙНОСТ!;#СТОЙНОСТ!;2;#СТОЙНОСТ!;#СТОЙНОСТ!;#СТОЙНОСТ!;3;3},"")
- Изход: {1;9;"";"";"";"";"";2;"";"";3;3} .
- Получаваме празни стойности за всички грешки.
- CONCAT({1;9;"";"";"";"";"";2;"";"";3;3})
- Изход: 19233 .
- Накрая добавяме всички стойности, за да получим само петцифрени числа.
6. Използване на Flash Fill за извличане на числа в рамките на диапазон
Използване на на Запълване на светкавицата Функцията е по-лесна и проста от всеки друг метод, споменат по-горе. Ще извлечем числа от всяка позиция в текстовите низове. За да изпълним този метод правилно, трябва да помогнем на Excel да намери модела на стойностите на клетките в колона или ред, като направим извличането само за първите две стойности.
Стъпки:
- За начало въведете числата ръчно в клетката C5 .
- След това започнете да въвеждате числата от клетката B6 към клетка C6 и Excel автоматично ще разпознае модела.
- Накрая натиснете Въведете .
Забележки: Този метод има някои недостатъци, поради което не се препоръчва за всички случаи, когато трябва да извлечете числа от текстови низове. Запълване на светкавицата обикновено следва шаблон от клетките в дадена колона или диапазон. Така че първите 2 или 3 извличания или изчисления трябва да се направят ръчно, за да се помогне на Excel да възприеме общия шаблон на резултантните стойности. Но понякога той не следва точния шаблон, от който се нуждаем, и по този начин ще следва свой собствен шаблон и ще ви даде несъответстващ резултат.
Например, ако трябва да извлечем две нули (00) от дадените данни, тя ще покаже само една нула, а не две. След това, ако искате да извлечете числа от началните или последните позиции в дадена клетка, тя ще извлече и текстовите стойности заедно с числата.
Прочетете още: Как да извлечете числа след определен текст в Excel (2 подходящи начина)
7. Прилагане на код VBA за извличане само на числа от клетка на Excel
Ако искате да използвате Макрос на Excel VBA да извличате само числа от клетките, тогава следвайте стъпките по-долу. Ще ви покажем как да въведете кода в Модул VBA Този код ще поиска от потребителя да посочи диапазоните на входните и изходните клетки.
Стъпки:
- Първо, натиснете ALT+F11 за да отворите VBA прозорец.
- След това от Вмъкване на изберете раздела Модул Ще се появи нов прозорец на модула, в който ще въведете кодовете.
- Трето, в модула си поставете следните кодове, след като ги копирате.
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 = "Избор на входни данни" DBxName2 = "Избор на изходни клетки" Set InBx1 = Application.InputBox("Входна област от текстови клетки:", _ 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
- След това натиснете F5 за изпълнение на кода. В диалогов прозорец с име " Избор на входни данни " ще се появи.
- След това изберете всички текстови клетки (т.е. B5:B12 ) и натиснете OK .
- След това се отваря друг диалогов прозорец с име " Избор на изходна клетка ", където трябва да изберете конкретна клетка или диапазон от клетки, за да видите изходните данни или стойности.
- Накрая изберете обхвата от клетки C5:C12 и натиснете Въведете .
- Следователно ще видите извлечените числа от текстовете наведнъж. По този начин ще завършим седемте бързи метода за извличане на числа само от клетка на Excel.
🔎 Разбивка на кода VBA
➤ Деклариране на параметри
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 = "Избор на входни данни" DBxName2 = "Избор на изходни клетки"
- Тук в тази част отначало декларираме всички наши параметри като цели числа, символни низове или диапазони от клетки. След това даваме имената на нашите диалогови прозорци с "Избор на входни данни" и "Избор на изходна клетка" .
➤ Дефиниране на видовете входове и изходи за диалоговите полета
Set InBx1 = Application.InputBox("Входна област от текстови клетки:", _ DBxName1, "", Type:=8) If TypeName(InBx1) = "Нищо" Then Exit Sub Set InBx2 = Application.InputBox("Изберете изходни клетки:", _ DBxName2, "", Type:=8) If TypeName(InBx2) = "Нищо" Then Exit Sub Iteration = 0 XtrNum = ""
- Сега определяме параметрите и техните типове за диалоговите прозорци. Тук добавянето на Type:=8 означава, че входните и изходните данни ще се състоят от референтни клетки или диапазон от клетки.
- Също така определяме, че ако не бъдат намерени входни данни, подпрограмата ще спре. Като се спомене този макрос, подпрограмата няма да се прекъсне заради липсващи данни, а ще спре да функционира.
➤ Комбиниране на функциите в кода Цикли за итерации
За всяка 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
- Накрая, това е най-важната част, в която прилагаме функциите или формулите, които трябва да присвоим на текстовете, за да намерим резултатните стойности от низовете.
- Едно от основните предимства на кодирането на функция за Excel е, че не е необходимо да въвеждате голяма формула, както се налагаше при предишните методи, тъй като VBA разполага с вградени команди за използване на цикли For или While, при които може да се изпълни итерация за всеки детайл в текстов низ без никакви затруднения.
Прочетете още: Как да отделяме числа от текст в Excel VBA (3 метода)
Заключение
Показахме ви 7 лесни метода за извличане само на числа от клетка на Excel. Извличането само на числа от текстов низ не е толкова просто, колкото изглежда, защото изисква комбинация от няколко функции, което прави крайната формула или синтаксис сложни. Но се надяваме, че начинът, по който се опитахме да илюстрираме формулите, като разделихме вътрешните функции, ви е помогнал да разберете синтаксиса с малко повече удобство и лекота.
Ако откриете други функции или формули, които е трябвало да добавим тук, моля, уведомете ни чрез ценните си коментари. Или можете да разгледате нашите по-информативни и интересни статии, свързани с функциите на Excel на този уебсайт.