
前提
スプレッドシートQuery関数の order by について質問です。
集計表の各列を、任意の順に並べ替えたいのですが上手くいきません。
実現したいこと
下記画像、D~G列のデータを任意の列に並べ替えたいです。
具体的には
D列 → 20gの販売重量 (kg)
E列 → 80gの販売重量 (kg)
F列 → 1kgの販売重量 (kg)
G列 → 20kgの販売重量 (kg)
に並び替えたいです。
ちなみにA1セルには、以下の数式が含まれています。
=ARRAYFORMULA({ QUERY('発送管理表'!C:F, "select year(C), month(C)+1, sum(F) where C is not null group by year(C), month(C)+1 label year(C) '年', month(C)+1 '月', sum(F) '総販売重量 (kg)'" ), QUERY('発送管理表'!C:F, "select sum(F) where C is not null and (D='20g' or D='80g' or D='1kg' or D='20kg') group by year(C), month(C)+1 pivot D label sum(F) 'の販売重量 (kg)'" ) })
(↑この数式は、以前私がQuery関数について別の質問を投稿した際、 当時の回答者である qnoir 様 が書いてくださった数式を引用させて頂いております)
【引用元の投稿はこちら↓】
「スプレッドシートQuery関数で、別条件のデータをまとめて1つのコードで出力したい」
https://teratail.com/questions/5q116sch3g2lqq
発生している問題・エラーメッセージ
関数 ARRAY_ROW のパラメータ 2 に一致しない行サイズがあります(20 となるべきところが 1 になっています)。
該当の数式
=ARRAYFORMULA({ QUERY('発送管理表'!C:F, "select year(C), month(C)+1, sum(F) where C is not null group by year(C), month(C)+1 label year(C) '年', month(C)+1 '月', sum(F) '総販売重量 (kg)'" ), QUERY('発送管理表'!C:F, "select sum(F) where C is not null and (D='20g' or D='80g' or D='1kg' or D='20kg') order by D asc group by year(C), month(C)+1 pivot D label sum(F) 'の販売重量 (kg)'" ) })
(↑この数式は、以前私がQuery関数について別の質問を投稿した際、当時の回答者である qnoir 様が書いてくださった数式に、order by 列 asc を組み込んだものです)
【当時の投稿はこちら↓】
「スプレッドシートQuery関数で、別条件のデータをまとめて1つのコードで出力したい」
https://teratail.com/questions/5q116sch3g2lqq
試したこと
20g、80g、1kg、20kgの昇順に並べ替えたいので、 order by 列 asc を使ってデータを昇順に並べようと試みました。
しかしこれだとエラーになります。
ここで一つ考えたのが、
・20g → 20
・80g → 80
・1kg → 1000
・20kg → 20000
とし、4つのデータのケタをg表記、かつ単位なしで表示すれば order by D asc で昇順にできるのではないかということです。
ですがこれですと、参照先データ (上記の黄色いデザインの画像) のD列「20g、80g、1kg、20kg」の表記をすべて変更することになり、データ管理の都合上できれば避けたいです。
(当データは商品販売に関わるメンバー数人で共有する予定です。そのためケタの変更された数字表記ではなく、単位のついた表記のほうが、メンバー皆にとって何のデータかがわかりやすいため表記の変更をしないようにしたいです)
「g」という単位がついたデータを任意の順に並べ替えることは、Query関数においては不可能でしょうか?
やはり参照先データの単位を外し、数字のみで表記する必要があるのでしょうか?
ご教示よろしくお願いいたします。


回答1件
あなたの回答
tips
プレビュー