次の形式のデータの列があります。
A1: "IDjohn / 35.00 / california"
A2: "IDmike / 25.00 / oregon"
A3: "IDrebecca / 40.00 / ohio"
B1: "IDchang / 20.00 / washington"
B2: "IDwill / 25.00 / delaware"
各セルには情報が非常に密集しています。スラッシュ間の数字を抽出した後、列全体を要約する式を見つけようとしています。したがって、列Aの合計は100.00になり、列Bの合計は45.00になります。
そのようなことは可能ですか?または、データ形式をより解析可能な形式に作り直す必要がありますか?
私はregexextract
を使用します
=arrayformula(sum(0+iferror(regexextract(A1:A3, "[\d\.]+"))))
ここで、正規表現は、0〜9の数字で構成される最初の文字グループを、場合によってはドットで取得します。 iferror
には空の文字列を単に表示するのではなく#N/Aを表示するという迷惑な習慣があるため、そのようなグループがない場合(セルが空の場合)にはラッパーregexextract
が必要です。 0を追加すると、シートは結果を数値として扱います。そして、彼らは追加されます。
もう少し短い選択肢はregexreplace
です:
=arrayformula(sum(0+regexreplace(A1:A3, "[^\d\.]", "")))
ここで、regexreplace
はnot数字またはピリオドであるすべてを削除します。利点は、エラーがスローされないことです。欠点は、たとえば、3番目の列に0〜9の数字がある場合、誤った結果が得られる可能性が高くなることです。これらの数字は、必要な数字に追加されます。
私もこれに苦労していました。私のようなテキストがありました
A1: 3 Test 1 something
B1: 1.5 Something else here, which does not matter
C1: 3
上記の数式はほとんど機能していましたが、セルに数字しかなかった場合は機能しませんでした。わずかな変更は、TO_TEXT
関数を使用することです。だから、このようなもの:
=arrayformula(sum(0+iferror(regexextract(to_text(A1:C1), "[\d\.]+"))))
@ user135384の答えが正しくないと言うつもりはありません。数字だけでも問題の一部ではありませんでした。しかし、これに遭遇した場合、上記のto_text関数が役立ちます。あなたの答えを@ user135384に感謝します。