Формула 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 км, 12 вольт, 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 к позиции, чтобы получить "начальную позицию".

Наконец, мы используем эту позицию со стандартными функциями LEFT и RIGHT, чтобы отделить числа от единиц:

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

Обратите внимание, что константа жестко запрограммированного числового массива является уловкой для удобства и обрабатывает только необработанные значения длиной до 9 символов.

Хорошие ссылки

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

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