QUERYで集計から抜ける金額を見つける

LWP | QUERYで集計から抜ける金額を見つける

QUERYで集計から抜ける金額を見つける

図解1|四つの明細、合計は16,400円のはず

四つの受注明細と数量掛ける単価の照合から、期待合計16400円を示す図

図1|一行が一つの受注明細。まず、何を合計する表なのかをそろえる。

解説1|四つの明細、合計は16,400円のはず

ストーリー

ナマズさん「この4件をまとめたいんだけど、合計は16,400円になるはずなんだ。」

ココさん「受注明細ごとの金額ですね。元の受注メモと対応させてから、QUERYで集計してみます。」

全国規模の中華食材卸・淡水社の架空の教材表を使う。一行は一つの受注明細で、同じ商品でも受注が別なら別の行になる。金額は円単位の受注額で、税・送料・値引きは含めない。

入力例の元になる受注メモ

受注明細

商品・規格

数量×単価

金額

O001-1

干ししいたけ500g

6袋×1,200円

7,200円

O001-2

豆板醤1kg

4本×800円

3,200円

O002-1

干ししいたけ500g

3袋×1,200円

3,600円

O003-1

豆板醤1kg

3本×800円

2,400円

各明細を数量と単価で確かめると、7,200+3,200+3,600+2,400=16,400円となる。以降はこの4件を、A列に受注明細、B列に元金額を置いたGoogleスプレッドシートで扱う。

読むポイント

集計結果だけを見て「正しそう」と判断せず、元の受注メモで件数と金額を確かめておく。その比較があれば、計算結果が不足したときに、どの明細が関係するかを調べられる。

図解2|見た目が数字でも、値の種類が違う

B2からB4は数値、B5は文字列の2400であり、QUERYの合計が14000になる比較図

図2|表示が2400でも、数値として入っているとは限らない。

解説2|見た目が数字でも、値の種類が違う

ストーリー

ナマズさん「14,000円? 2,400円足りないな。でも、表の最後にも2400と書いてあるよ。」

ココさん「表示だけでは分からないので、最後のセルに入っている値の種類を確認しましょう。」

入力例

新しいシートへ下表を入力する。B5だけは、半角のアポストロフィを先頭に付けて '2400 と入力する。セル上の表示は2400でも、値は文字列として保持される。引用符を含む文字を表示させる操作とは区別する。

行

A列

B列

1

受注明細

元金額

2

O001-1

7200

3

O001-2

3200

4

O002-1

3600

5

O003-1

'2400と入力

数式と結果

F1:F2を空けて、F1へ次の式を入れる。

=QUERY(A1:B5,"select sum(B) label sum(B) '受注金額合計'",1)

F1には「受注金額合計」、F2には14000が表示される。sum(B)はB列の合計、labelは結果の見出しを指定する部分。第3引数の1は、入力範囲の先頭1行を見出しとして扱う指定である。

読むポイント

この教材では、原因を再現するためB5だけを意図的に文字列にした。実務では、外部からの貼り付けや取込みなどで同じ混在が起きていないかを調べる。

図解3|文字列の2400は、QUERY内でnull扱い

数値三件と文字列一件の列から、QUERY内では文字列だけnull扱いとなり合計へ入らない構造図

図3|元セルの値と、QUERYが集計に使う値を分けて見る。

解説3|文字列の2400は、QUERY内でnull扱い

ストーリー

ココさん「この列には数値が3件、文字列が1件あります。QUERYは多い方の型を使い、少ない方の型の値をnullとして扱います。」

ナマズさん「元の2400が消えたんじゃなくて、QUERYの集計に使われていないんだね。」

一つの列で型が混在すると、QUERYは多数を占める型を列の型として使う。この例では数値が多数なので、文字列の2400はQUERY内でnullとして扱われ、数値の合計に加わらない。エラーが出なくても、業務上必要な金額がすべて集計されたとは限らない。

関数の役割

元セル

元の値の型

QUERY内での扱い

B2:7200

数値

7200

B3:3200

数値

3200

B4:3600

数値

3600

B5:2400

文字列

null

数値3件を足すと14,000円になる。nullは「元の受注金額が0円」という意味ではなく、今回のQUERY内で有効な数値として扱われていないということ。元シートのB5は書き換わらない。

読むポイント

「QUERYは文字列をすべて無視する」と一般化しない。文字列が多数を占める列なら、選ばれる型も違う。この記事は数値3件・文字列1件の金額列に絞り、同数の場合の型選択は扱わない。

図解4|ISNUMBERで、型の違うセルを見つける

元金額列とISNUMBERのTRUE、TRUE、TRUE、FALSEを行ごとに対応させる図

図4|見た目や配置から推測せず、値が数値かどうかを式で調べる。

解説4|ISNUMBERで、型の違うセルを見つける

ストーリー

ココさん「C列を確認用に使いましょう。ISNUMBERなら、数値はTRUE、それ以外はFALSEになります。」

ナマズさん「最後の1件だけFALSEだ。受注メモの2,400円と対応しているね。」

入力例と数式

C1に「数値判定」と書き、C2へ次の式を入れてC5までコピーする。各行の式が、同じ行のB列を見ることを確かめる。

=ISNUMBER(B2)

計算結果

行

A列

B列

C列

1

受注明細

元金額

数値判定

2

O001-1

7200

TRUE

3

O001-2

3200

TRUE

4

O002-1

3600

TRUE

5

O003-1

2400

FALSE

ISNUMBERは数値に見える文字列を数値へ変換せずに判定する。B5の表示が2400でも、値が文字列ならFALSEである。B5を右寄せにしたり、表示形式を通貨へ変更したりしても、この判定の代わりにはならない。

読むポイント

FALSEだからといって、その行を削除しない。今回は元の受注メモで2,400円と確認できるため、数値への変換を検討できる。空欄や「未確定」などの文字が入っている場合は、それぞれの業務上の意味を先に確認する。

図解5|元金額を残して、別の列で数値へ直す

B列の文字列2400がVALUEを通ってD列の数値2400になり、元列は保持される図

図5|判定と変換を分け、直した値を元明細と照合できるようにする。

解説5|元金額を残して、別の列で数値へ直す

ストーリー

ナマズさん「元の入力を消すと、あとで違いを追いにくいな。」

ココさん「B列は残して、D列で数値に直します。変換できない値があれば、エラーのまま原因を確認しましょう。」

入力例と数式

D1に「数値化」と書き、D2へ次の式を入れてD5までコピーする。この教材のB2:B5は、数値または金額を表す数字の文字列だけである。

=VALUE(B2)

計算結果

元セル

元の値の型

変換先

変換後の値

B2:7200

数値

D2

数値7200

B3:3200

数値

D3

数値3200

B4:3600

数値

D4

数値3600

B5:2400

文字列

D5

数値2400

VALUEはGoogleスプレッドシートが認識できる文字列を数値に変換する。今回のD2:D5はすべて数値となる。空いているセルで =ISNUMBER(D5) を試すとTRUEになる。一方、B5は文字列のままなので、C5の判定はFALSEのままでよい。

読むポイント

VALUEで変換できない文字列はエラーになる。IFERRORで一律に0へ置き換えると、「0円の明細」と「変換に失敗した明細」を区別しにくくなる。また、日付らしい文字列も数値へ変換される場合がある。変換できたことだけで、正しい受注金額と判断しない。

図解6|直した列で再集計し、四つの金額を照合する

B列のQUERY結果14000とD列のQUERY結果16400を比較し、四明細の一致へつなぐ図

図6|各行の金額を受注メモと照合し、変換後の4件がすべて数値かも確かめる。

解説6|直した列で再集計し、四つの金額を照合する

ストーリー

ココさん「集計する列をD列へ変えたら、16,400円になりました。」

ナマズさん「4件とも受注メモと一致している。これなら、何を直した結果なのかも説明できるね。」

数式と結果

F列の集計を比較用に残し、H1:H2を空けてH1へ次の式を入れる。

=QUERY(A1:D5,"select sum(D) label sum(D) '受注金額合計'",1)

元の式から、入力範囲をA1:D5へ広げ、sumの対象をBからDへ変えた。H1は「受注金額合計」、H2は16400になる。F2の14000との差は2400で、文字列だったO003-1の金額と一致する。

結果の照合

確認対象

確認できる結果

明細の対応

O001-1、O001-2、O002-1、O003-1の4件

D2:D5の値

7200、3200、3600、2400

D2:D5の数値判定

4件ともTRUE

変換前の集計F2

14000

変換後の集計H2

16400

合計だけなら、別の誤りが相殺して一致することもある。各行の金額、数値型、件数まで確認し、入力元のどこで文字列になったかも調べる。次回の取込み後も同じ確認を行えば、同種の集計漏れを見つけやすい。

出典

Google公式:QUERY / ISNUMBER / VALUE。2026-11-03確認。会社・取引・価格は説明用の架空例。