Формула на Excel: Разделяне на числа от мерни единици -

Съдържание

Обща формула

=MAX(ISNUMBER(VALUE(MID(A1,(1,2,3,4,5,6,7,8,9),1)))*(1,2,3,4,5,6,7,8,9))+1

Обобщение

За да разделите число от единична стойност, можете да използвате формула, базирана на няколко функции: MAX, ISNUMBER, VALUE и MID. В показания пример формулата в C5 е:

=MAX(ISNUMBER(VALUE(MID(B5,(1,2,3,4,5,6,7,8,9),1)))*(1,2,3,4,5,6,7,8,9))+1

Забележка: това е експериментална формула, която използва твърдо кодирана константа на масива, зададена тук за справка и коментар. Само небрежно тествани, така че внимавайте дали използвате или адаптирате.

Обяснение

Понякога срещате данни, които смесват единици директно с числа (т.е. 8 км, 12v, 7,5 часа). За съжаление Excel ще третира числата в този формат като текст и няма да можете да извършвате математически операции върху такива стойности.

За да разделите число от единична стойност, трябва да определите позицията на последното число. Ако добавите 1 към тази позиция, имате начало на текста на единицата. Тази формула използва тази концепция, за да разбере къде започва мерната единица.

В показания пример формулата в C5 е:

=MAX(ISNUMBER(VALUE(MID(B5,(1,2,3,4,5,6,7,8,9),1)))*(1,2,3,4,5,6,7,8,9))+1

Тази формула използва функцията MID за извличане на първите 9 стойности в B5, един по един символ. Резултатът е масив като този:

("8","0","v","","","","","","")

След това използваме функцията VALUE, за да преобразуваме числата в текстов формат в реални числа. Резултатът е:

(8,0,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!)

Изпълняваме този масив през ISNUMBER, за да получим:

(TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE)

След това умножете това по друг масив с 9 числа, за да получите:

(1,2,0,0,0,0,0,0,0)

След това използваме MAX, за да получим най-голямата стойност, която е позицията на "последното число".

И накрая, добавяме 1 към позицията, за да получим позицията "единица старт".

И накрая, използваме тази позиция със стандартни функции НАЛЯВО и НАДЯСНО, за да отделим числата от единиците:

=VALUE(LEFT(B5,C5-1)) // number =TRIM(RIGHT(B5,LEN(B5)-C5+1)) // unit

Имайте предвид, че твърдо кодираната константа на масив от числа е хак за удобство и ще обработва само сурови стойности с дължина до 9 знака.

Добри връзки

Вдъхновение от формулите на Рик Ротщайн за MrExcel

Интересни статии...