Чтобы получить числа, если они находятся в начале строки, мы можем использовать это:
=MID(A2,1,AGGREGATE(14,6,SEARCH("}}}",SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(A2)-LEN(SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"")))),1))
как наша базовая формула, это найдет конец числа и вернет его как конец функции MID().
Здесь много чего происходит:
SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(A2)-LEN(SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"")))
Поскольку эта часть перебирает числа, она заменяет последний экземпляр каждого числа на }}}
.
Третий критерий ЗАМЕНЫ - это экземпляр. Мы находим количество экземпляров с LEN(A2)-LEN(SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},""))
. Он перебирает числа и заменяет каждое из них ничем. Затем он находит разницу в длине исходной строки и новой.
Таким образом, в случае A2, когда он повторяется до 2
он находит 2, а внешняя замена заменяет последнюю на }}}
. Это просто временный заполнитель.
Агрегатная функция является многофункциональной функцией. 14 сообщает функции, которые мы используем для функции Large()
. 6
говорит функции игнорировать ошибки. Это важно, так как многие из итераций ничего не найдут и вернут ошибку.
С 1
в конце он сообщает функции, что мы хотим получить максимальную отдачу от функции поиска, которая ищет те временные }}}
, которые помещаются в ходе итерации в последний экземпляр каждого числа.
Таким образом, Агрегат возвращает максимальное найденное число. Который мы переходим к критерию длины в функции Mid.
Итак, теперь мы нашли число в начале строки.
Таким образом, мы можем умножить два из них вместе, чтобы получить желаемый результат (любая математическая функция превратит возвращаемую строку в число):
=MID(A2,1,AGGREGATE(14,6,SEARCH("}}}",SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(A2)-LEN(SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"")))),1))*MID(B2,1,AGGREGATE(14,6,SEARCH("}}}",SUBSTITUTE(B2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(B2)-LEN(SUBSTITUTE(B2,{1,2,3,4,5,6,7,8,9,0},"")))),1))
Одна оговорка Функция агрегирования была введена в Excel 2010. Может не работать со старыми версиями.
Если у вас более старая версия, вам нужно использовать эту более длинную формулу:
=MID(A2,1,MAX(IF(ISNUMBER(SEARCH("}}}",SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(A2)-LEN(SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},""))))),SEARCH("}}}",SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(A2)-LEN(SUBSTITUTE(A2,{1,2,3,4,5,6,7,8,9,0},"")))))))*MID(B2,1,MAX(IF(ISNUMBER(SEARCH("}}}",SUBSTITUTE(B2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(B2)-LEN(SUBSTITUTE(B2,{1,2,3,4,5,6,7,8,9,0},""))))),SEARCH("}}}",SUBSTITUTE(B2,{1,2,3,4,5,6,7,8,9,0},"}}}",LEN(B2)-LEN(SUBSTITUTE(B2,{1,2,3,4,5,6,7,8,9,0},"")))))))
Он работает примерно так же, как приведенный выше, он должен сначала проверить наличие ошибок, прежде чем найти макс.