Googleフォームでレシート単位に複数の商品を入力できるようにすると、回答管理が便利になる一方で、スプレッドシート側では「横に長く並んでしまう」という問題が発生しやすくなります。特にセクション分岐を利用したフォームでは、回答が1行に集約される仕様のため、あとから集計しにくく感じる人も少なくありません。
この記事では、Googleフォームの仕様を踏まえながら、商品ごとに縦並びで整理する方法や、Googleスプレッドシート・Excelを使った現実的な管理方法について解説します。
Googleフォームは「1回答=1行」が基本仕様
まず理解しておきたいのが、Googleフォームは回答単位で1行に保存される仕様という点です。
そのため、質問文にあるように「セクション2」「セクション3」と繰り返し入力を作ると、スプレッドシートでは以下のようになります。
| 日時 | 商品1 | 金額1 | 商品2 | 金額2 | 商品3 | 金額3 |
|---|---|---|---|---|---|---|
| 2026/5/28 | 洗剤 | 500 | スポンジ | 100 | タオル | 300 |
つまり、Googleフォーム単体では「商品ごとに縦へ追加」はできません。
理想形に近づけるなら「1商品=1回答」が最強
実務的に最も扱いやすいのは、「1商品ごとにフォーム送信する方式」です。
例えば以下のようにします。
- 購入日
- 店舗名
- 商品カテゴリ
- 商品名
- 金額
- 支払方法
- レシート番号
- レシート画像
そして、同じレシートの商品でも1商品ごとにフォーム送信します。
この方式ならスプレッドシートでは自然に縦並びになります。
| 日付 | 商品名 | 金額 | レシート番号 |
|---|---|---|---|
| 5/28 | 洗剤 | 500 | A001 |
| 5/28 | スポンジ | 100 | A001 |
集計・フィルタ・ピボットテーブルも非常にやりやすくなります。
現在のフォーム構成を活かすならスプレッドシート側で整形する
既にフォームを作り込んでいる場合は、Googleスプレッドシート側で縦持ち変換する方法があります。
例えば以下のような補助シートを作成します。
方法1:QUERY関数やARRAYFORMULAを使う
Googleスプレッドシートでは関数を使って、横並びデータを縦方向へ変換できます。
ただし、セクションが10個ある場合は数式がかなり複雑になります。
ある程度スプレッドシート操作に慣れている方向けです。
方法2:Apps Scriptで自動整形
Google Apps Scriptを使うと、フォーム送信時に「商品ごとに1行へ自動変換」できます。
例えば以下のような処理です。
- フォーム回答シートを監視
- 商品1〜10を順番に確認
- 入力済み商品のみ別シートへ1行ずつ追加
この方式だと、元フォームはそのままで、管理用シートだけ綺麗な縦型になります。
空の質問を入れて列を揃える方法はおすすめしない
質問内にある「空欄用の質問を追加して整列する方法」ですが、基本的にはおすすめできません。
理由としては以下があります。
- 列数が増えすぎる
- 管理が複雑になる
- あとから修正しづらい
- 分析時に不要列が邪魔になる
特にレシート管理のように今後データ量が増える用途では、最初から「縦持ち」を前提にした設計のほうが圧倒的に扱いやすくなります。
ExcelやLooker Studioを使う方法も便利
Googleスプレッドシートだけでなく、ExcelのPower Queryを使う方法もあります。
Power Queryなら、横持ちデータを数クリックで縦持ち変換できます。
また、集計目的ならLooker Studioを使うことで、カテゴリ別・支払方法別の分析も簡単になります。
おすすめ構成の実例
実務的には以下の構成がかなり使いやすいです。
| 項目 | おすすめ |
|---|---|
| 入力方式 | 1商品ごと送信 |
| レシート識別 | レシート番号共通化 |
| 画像管理 | Googleドライブ保存 |
| 分析 | ピボットテーブル |
| 自動化 | Apps Script |
特に「レシート番号」で同一会計を紐付ける方法は、経費管理でもよく使われています。
まとめ
Googleフォームは仕様上「1回答=1行」になるため、セクションを増やすほど横長データになります。商品単位で縦並び管理したい場合は、「1商品=1回答」に設計変更するか、GoogleスプレッドシートやApps Scriptで縦持ち変換するのが現実的です。将来的な集計や分析のしやすさを考えると、最初から縦型データを意識して設計すると管理がかなり楽になります。


コメント