web-dev-qa-db-ja.com

REGEXで数値を抽出した後、数値の行を合計する方法は?

次の形式のデータの列があります。

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になります。

そのようなことは可能ですか?または、データ形式をより解析可能な形式に作り直す必要がありますか?

5
Quells T

私はregexextractを使用します

=arrayformula(sum(0+iferror(regexextract(A1:A3, "[\d\.]+"))))

ここで、正規表現は、0〜9の数字で構成される最初の文字グループを、場合によってはドットで取得します。 iferrorには空の文字列を単に表示するのではなく#N/Aを表示するという迷惑な習慣があるため、そのようなグループがない場合(セルが空の場合)にはラッパーregexextractが必要です。 0を追加すると、シートは結果を数値として扱います。そして、彼らは追加されます。

もう少し短い選択肢はregexreplaceです:

=arrayformula(sum(0+regexreplace(A1:A3, "[^\d\.]", "")))

ここで、regexreplacenot数字またはピリオドであるすべてを削除します。利点は、エラーがスローされないことです。欠点は、たとえば、3番目の列に0〜9の数字がある場合、誤った結果が得られる可能性が高くなることです。これらの数字は、必要な数字に追加されます。

6
user135384

私もこれに苦労していました。私のようなテキストがありました

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に感謝します。

0