回答:
このようなものを実装する1つの方法は
=VALUE(INDEX(FILTER(SPLIT(A1, " "), ISNUMBER(SPLIT(A1, " "))); 1; 1))
いくつかのサンプル文字列に対するこの式の結果を以下に示します。
個々のニーズに合わせてこれを変更する必要がある場合があります。「3カップ」のような単純な文字列に対しては、かなりうまく機能するはずです。
SPLIT(..., " ")
文字列をスペースで区切られた部分に分割します。文字列にさらに文字を追加できます。たとえば" -/"
、それらの文字が見つかったときにいつでも分割できます。
ISNUMBER
文字列が数字かどうかをチェックします。
FILTER
配列を取得し、2番目の関数を満たさないすべてのものを除外します。つまり、数値以外のすべてを除外します。
INDEX(...; 1; 1)
は、配列の最初の行、最初の列に値を返します(したがって、リストされているすべての数値ではなく、最初の数値のみが取得されます)。
VALUE
おそらく必要ありませんが、適切な測定のために、最終的な文字列を数値に変換します。
VALUE
…
VALUE
答えで与えたすべての入力例でエラー(「数値に解析できません」)が発生します。
VALUE
OPの最初の質問に対する答えであり、タイトルでもあります。
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の場合もあります)に置き換え=
てから、置換し=
ます。