質問内容について
いつも初心者さんにはある程度は許容してアドバイスしているのですが、これはあまりにも丸投げの質問すぎてちょっとあきれてしまいました。
Teratailは「エンジニア同士で技術問題を解決する」掲示板という名目なのですが、
>マクロを作成することができません。
知識の有無は別として、こんなことを言ってしまうsignoさんは本当に自分のことを技術者だと言えますか?
技術者を名乗る(もしくはこれから目指す)のであれば、この質問の前に自分で調べる努力が必須です。
コードが1行もかけていなかったとしても、自分なりに調べた内容を提示し、そのうえでつまづいた箇所を記載すべきです。
そもそも商品コードが4桁しかなかったり商品名が「りんご」や「みかん」なあたりが、課題とか参考書の問題を解かされてる感が半端ないのですが、ここはコードを書いてもらうための場所ではありませんよ。
誤記について
質問本文も書きかけで投稿されているようですので、表もまともではないのだとは思いますが。
やりたいことがタイトルの通りだとすれば、Sheet1の4行目以降、「ぶどう」や「めろん」に商品コード「0100」がついているのはおかしいですよね?
アドバイス
質問内容が丸投げなので私からはコード提供はいたしかねますが、初心者さんとですのでコードを書くためのアドバイスはさせていただきます。
まず処理の流れですが、
①Sheet1を商品コード順に並べる
②商品の先頭行から1行ループ処理
~行ループここから~
③対象行の商品コードを取得する
④商品コードで条件分岐
⇒前行の商品コードと異なる場合(もしくは先頭行の場合)
④-a1 前回の出力シートの出力行位置に、合計を出力する(先頭行の場合は処理不要)
④-a2 商品コードのシートを作成し、今回の出力シートとする
④-a3 出力行を先頭(1行目が見出しなら2行目)に設定する
⇒前行の商品コードと同じ場合
④-b1 前回の出力シートを今回も出力シートとする
⑤出力シートの出力行位置に商品名・金額を出力する
⑥すべての行を出力するまで③~⑥を繰り返す
~行ループここまで~
⑦処理終了
という感じになると思います。
この中で使用する命令は、ループ処理やシート作成、セル内容のコピーなど、ExcelVBAとして初歩的なコーディングだけで実現できます。
合計計算の部分は、セルにSUM関数をセットするようにしてもいいですし、ループ処理の中で加算しておいて、結果の値を出力してもいいでしょう。
これをもとにコードを調べ、書き始めて、どこかつまづくところがあればまたご質問ください。
その時は喜んでアドバイスさせていただきます。
最後に
余談ですが、この内容で純粋に集計結果を知りたいだけなら、私ならマクロなど使用しません。
Excel自体の集計機能でもできそうですし、フィルター機能とSUBTOTAL関数の組み合わせでも十分できるからです。
どうしても「商品コードごとにシートを分けたい」という場合は、マクロでの処理が必要になると思います。
苦言が多くなってしまいましたが、参考になれば幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。