- ベストアンサー
複数のシート上にある同一のテーブルから今日の売上を集計したい
こんにちは。 複数の店舗を抱えており、店舗ごとにシート一枚で様々なデータをまとめてます。 A1~G1まで、No.、販売日、商品コード、商品名、定価、販売個数、販売価格となっているときに、それぞれの店舗で今日売り上げたデータを同じテーブル形式(No.、販売日、商品コード、商品名、定価、販売個数、販売価格)で別シートに転記するには何か方法がありますか?並ぶ順番とかはどうでもよく、単に今日の売上品目と販売個数&金額がわかればいいのですが。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.3です! 返信が遅くなってごめんなさいね。 補足欄に >Sheet2のH列(作業列)に求めたのは何なのでしょうか? に関しての説明です。 前回の数式はとりあえず10000行目まで対応できる数式でしたが、 作業用のH列の数式は 販売日が TODAYの場合の行の行番号を表示させています。 (TODAY以外は空白になっています。) そして、その番号を見ていただくと判ると思いますが、 INDEX関数で2行目~10000行目まで範囲指定していますので、 仮に「1」が表示されている行はINDEX関数で範囲指定した「1行目!」ということになります。 画像のH列の数値を見ていただければ表示されている数値は全て行番号になっているはずです。 それを元に別Sheet(今回はSheet2)に小さい順に表示させているわけです。 余計なお世話かもしれませんが、Sheet2のA2セルに入れている関数の説明をしますと、 前半の IF(COUNT(Sheet2!$H$2:$H$10000)<ROW(A1),"" という部分はH列に数値が入っているセルの数よりオートフィルした行が多い場合はそれ以降空白にする数式です。 単にエラー表示させないための式です。 ROW(A1)=1 になりますので、下へオートフィルでコピーするにしたがって (A2)=2 (A3)=3 ・・・という具合になり、仮にH列に10個数値が入ったセルがある場合は11行目からは空白になります。 そして、後半の INDEX(Sheet2!A$2:A$10000,SMALL(Sheet2!$H$2:$H$10000,ROW(A1)))部分は A2~A10000の範囲の中で、H列の数値の小さい順に順番に表示させているわけです。 SMALL関数でROW(A1)は範囲指定した中で「小さいものから1番目」となり、下へオートフィルするにしたがって、2番目・3番目・・・となるわけです。 列方向にもオートフィルでコピーしますので INDEXの範囲指定が複合参照になっている関係上、右となりの列に数式をコピーすると INDEX(Sheet2!B$2:B$10000,SMALL(Sheet2!$H$2:$H$10000,ROW(A1) となりB列の小さい順に表示できると言うわけです。 以上、長々と書きましたが この程度でよろしいでしょうか? どうも失礼しました。m(__)m
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 参考になるかどうか判りませんが・・・ 販売個数にもよるのですが、 当方使用のExcel2003ですと、65536行までは大丈夫です。 とりあえず全ての店舗のデータを一つのSheetにまとまることが出来れば方法は色々あると思います。 一例ですが、↓の画像で説明させていただくとSheet2に各店舗のデータをまとめたとします。 (空白行があっても構いません) 仮に店舗AのデータがSheet3にあるとします。 Sheet2のA2セルに =Sheet3!A2 という数式を入れこれ以上データはない!というくらいの行まで列方向・行方向にオートフィルでコピーします。 同様にA列のその下のセルに =Sheet4!A2 という具合に全ての店舗のセルを表示させるようにします。 空白の場合は「0」が表示されますが、気にしなくてもOKです。 気になるようでしたら ツール → オプション → 表示タブ から「ゼロ値」のチェックを外しておきます。 以上、全ての店舗のデータがSheet2に集まったとします。 そしてSheet2の作業列H2セルに =IF(B2=TODAY(),ROW(A1),"") としてオートフィルでずぃ~~~~~!っと下へコピーします。 これで今日のデータを集計する準備が出来ましたので Sheet1のA2セルに =IF(COUNT(Sheet2!$H$2:$H$10000)<ROW(A1),"",INDEX(Sheet2!A$2:A$10000,SMALL(Sheet2!$H$2:$H$10000,ROW(A1)))) という数式を入れ、列方向と行方向にオートフィルでコピーすると 画像のような感じになります。 以上、長々と書きましたが 参考になれば良いのですが、 的外れであったり、他に良い方法があれば 読み流してくださいね。m(__)m
補足
ご丁寧にご返答いただきありがとうございます。 連絡が遅くなり申し訳ございません。 Sheet2のH列(作業列)に求めたのは何なのでしょうか? 教えていただければ幸いです。
- wisemac21
- ベストアンサー率39% (171/429)
>同一のテーブルから 3-D集計または統合を使って、全店舗のデータを集計するのは如何ですか
補足
ありがとうございます。 統合というのは初めて知りました。 元データが更新された場合、統合先のデータは変わらないのですね。
- mu2011
- ベストアンサー率38% (1910/4994)
自動で行う場合はVBAによるマクロ作成が必要と思いますので、シート数が多いと大変ですが、手動で行う方法は如何でしょうか。 (1)店舗シートにオートフィルタを設定、販売日列のフィルタボタンで当日を選択 (2)フィルタリングされた範囲をコピーして当日用シートに貼り付け 以上の操作を店舗別シート単位に実施する。
お礼
ありがとうございます。 マクロですか。 ん~、使ったことがないですね。今度挑戦してみます。
お礼
ほ~ぉ・・・・。ただただ感心するばかりです。 こんなことがエクセルでできるなんて・・・・。また奥の深さを知った感じです。 なんとか解決の糸口が見つかりそうです! ほんとーにありがとうございました。