![](https://cdn.wiki-base.com/3742164/excel_formula_split_text_and_numbers__2.png.webp)
Обща формула
=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))
Обобщение
За да разделите текст и числа, можете да използвате формула, базирана на функцията FIND, функцията MIN и функцията LEN с функцията НАЛЯВО или НАДЯСНО, в зависимост от това дали искате да извлечете текста или номера. В показания пример формулата в C5 е:
=MIN(FIND((0,1,2,3,4,5,6,7,8,9),B5&"0123456789"))
което връща 7, позицията на числото 3 в низа "ябълки30".
Обяснение
Общ преглед
Формулата изглежда сложна, но механиката всъщност е доста проста.
Както при повечето формули, които разделят или извличат текст, ключът е да намерите позицията на нещото, което търсите. След като заемате позицията, можете да използвате други функции, за да извлечете това, от което се нуждаете.
В този случай приемаме, че числата и текстът са комбинирани и че числото се появява след текста. От оригиналния текст, който се появява в една клетка, искате да разделите текста и числата на отделни клетки, по следния начин:
Оригинален | Текст | Брой |
Ябълки 30 | Ябълки | 30 |
праскови24 | праскови | 24 |
портокали12 | портокали | 12 |
праскови0 | праскови | 0 |
Както беше посочено по-горе, ключът в този случай е да се намери началната позиция на числото, което можете да направите с формула като тази:
=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))
След като заемате позицията, за да извлечете само текста, използвайте:
=LEFT(A1,position-1)
И за да извлечете само числото, използвайте:
=RIGHT(A1,LEN(A1)-position+1)
В първата формула по-горе използваме функцията FIND за намиране на началната позиция на числото. За find_text използваме константата на масива (0,1,2,3,4,5,6,7,8,9), това кара функцията FIND да извършва отделно търсене за всяка стойност в константата на масива. Тъй като константата на масива съдържа 10 числа, резултатът ще бъде масив с 10 стойности. Например, ако оригиналният текст е "ябълки30", полученият масив ще бъде:
(8,10,11,7,13,14,15,16,17,18)
Всяко число в този масив представлява позицията на елемент в константата на масива в оригиналния текст.
След това функцията MIN връща най-малката стойност в списъка, която съответства на позицията в на първото число, което се появява в оригиналния текст. По същество функцията FIND получава всички числови позиции, а MIN ни дава първата цифрова позиция: забележете, че 7 е най-малката стойност в масива, която съответства на позицията на числото 3 в оригиналния текст.
Може да се чудите за странната конструкция за Within_text във функцията за търсене:
B5&"0123456789"
Тази част от формулата обединява всяко възможно число 0-9 с оригиналния текст в B5. За съжаление, FIND не връща нула, когато стойност не е намерена, така че това е само хитър начин да се избегнат грешки, които могат да възникнат, когато число не е намерено.
В този пример, тъй като приемаме, че числото винаги ще се показва на второ място в оригиналния текст, то работи добре, тъй като MIN принуждава да се върне само най-малкото или първото появяване на число. Докато число се появява в оригиналния текст, тази позиция ще бъде върната.
Ако оригиналният текст не съдържа никакви числа, ще бъде върната "фалшива" позиция, равна на дължината на оригиналния текст + 1. С тази фалшива позиция, формулата НАЛЯВО по-горе пак ще върне текста, а формулата НАДЯСНО ще върне празен низ ("").