Ответы:
Один из способов реализовать что-то вроде этого
=VALUE(INDEX(FILTER(SPLIT(A1, " "), ISNUMBER(SPLIT(A1, " "))); 1; 1))
Результат этой формулы для некоторых примеров строк приведен ниже.
Возможно, вам придется изменить это в соответствии с вашими индивидуальными потребностями. Это должно работать очень хорошо для простых строк, таких как «3 чашки».
SPLIT(..., " ")
разбивает строку на части, разделенные пробелом. Вы можете добавить больше символов в строку, например " -/"
, разделить, когда эти символы найдены.
ISNUMBER
проверяет, является ли строка числом.
FILTER
берет массив и отфильтровывает все, что не удовлетворяет второй функции, т. е. отбирает все, что не является числом.
INDEX(...; 1; 1)
возвращает значение в первой строке первого столбца массива (поэтому мы получаем только первый номер в списке, а не все числа в списке).
VALUE
Вероятно, в этом нет необходимости, но просто для большей меры он преобразует окончательную строку в числовое значение.
VALUE
...
VALUE
ошибку («невозможно разобрать в число») на всех входных примерах, которые я дал в ответе.
VALUE
это ответ на первый вопрос ОП и название тоже.
parseInt()
Альтернатива:
=INT()
=SUM(ARRAYFORMULA(INT(LEFT(B1:B2, LEN(B1:B2)-5))))
LEN(B1:B2)-5
, Включает в себя белое пространство.
Кажется, хорошее использование для регулярных выражений. Например:
где формула в E2:
="="&join("+",ArrayFormula(regexreplace(B2:D2,"\D","")))
Это удаляет все нечисловые значения, объединяет результат с +
и добавляет =
.
Скопируйте / Вставьте / Вставьте только те значения, например, в F2 (может быть E2), а затем Замените =
на =
.