QUERY関数が思った結果を返さないときの原因
条件を絞ったはずなのに、行が全部返ってくる。数値の列で合計しているつもりが0になる。where句で日付を指定したのに、何も引っかからない。エラーメッセージも出ない。QUERY関数はエラーを出さずに「期待と違う結果」を返すことが多く、原因が数式の外側(元データの作り方)にあることも珍しくありません。起きやすい原因を、実際の症状から順に見ていきます。■ QUERYは何をしているか=QUERY(範囲, "select A, B where C > 100", 1)第2引数は、SQLに似た構文で書く「クエリ言語」です。範囲の中身をこのクエリ言語で読み替えて返しますが、範囲の各列がどんなデータ型と「推定」されたかによって、同じ書き方でも結果が変わります。QUERYのつまずきの大半は、この「型の推定」に起因します。■ 症状1:数値が入っている列なのに、集計や比較が効かない=QUERY(A1:D100, "select sum(C) where C > 0")C列に数字が並んでいるはずなのに、合計が0になったり、where句の条件に何も引っかからなかったりします。原因は、C列の中に文字列として扱われるセルが混ざっていることです。QUERYは列全体をスキャンして型を推定しますが、その際、空白に見えるセルや、数式の結果が空文字("")になっているセルがあると、列全体が「文字列の列」と判定されることがあります。見た目には空欄でも、="" のような数式が入っていると、それは「空白」ではなく「長さ0の文字列」であり、数値の列としての判定を崩す原因になります。対処は、集計対象の列に文字列の数
0