質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

458閲覧

Excel VBA 商品コードごとにシートを作成し、価格の合計を出力するマクロの作成

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/01/04 03:25

###前提・実現したいこと
VBA初心者です。
シート1にボタンを作り、ボタンにシート2の内容のシートを出力するマクロを登録したいとおもっていますが、マクロを作成することができません。
ご教授お願い致します。

sheet1

商品コード商品名価格
0100りんご500
0100りんご200
2706みかん400
0100ぶどう250
0100めろん300
0100めろん400
0100みかん400

seet2(出力_0100)

商品コード商品名価格
0100りんご500
0100りんご200
合計700

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

質問内容について

いつも初心者さんにはある程度は許容してアドバイスしているのですが、これはあまりにも丸投げの質問すぎてちょっとあきれてしまいました。

Teratailは「エンジニア同士で技術問題を解決する」掲示板という名目なのですが、
>マクロを作成することができません。
知識の有無は別として、こんなことを言ってしまうsignoさんは本当に自分のことを技術者だと言えますか?

技術者を名乗る(もしくはこれから目指す)のであれば、この質問の前に自分で調べる努力が必須です。
コードが1行もかけていなかったとしても、自分なりに調べた内容を提示し、そのうえでつまづいた箇所を記載すべきです。

そもそも商品コードが4桁しかなかったり商品名が「りんご」や「みかん」なあたりが、課題とか参考書の問題を解かされてる感が半端ないのですが、ここはコードを書いてもらうための場所ではありませんよ。

誤記について

質問本文も書きかけで投稿されているようですので、表もまともではないのだとは思いますが。
やりたいことがタイトルの通りだとすれば、Sheet1の4行目以降、「ぶどう」や「めろん」に商品コード「0100」がついているのはおかしいですよね?

アドバイス

質問内容が丸投げなので私からはコード提供はいたしかねますが、初心者さんとですのでコードを書くためのアドバイスはさせていただきます。

まず処理の流れですが、

①Sheet1を商品コード順に並べる ②商品の先頭行から1行ループ処理  ~行ループここから~  ③対象行の商品コードを取得する  ④商品コードで条件分岐   ⇒前行の商品コードと異なる場合(もしくは先頭行の場合)    ④-a1 前回の出力シートの出力行位置に、合計を出力する(先頭行の場合は処理不要)    ④-a2 商品コードのシートを作成し、今回の出力シートとする    ④-a3 出力行を先頭(1行目が見出しなら2行目)に設定する   ⇒前行の商品コードと同じ場合    ④-b1 前回の出力シートを今回も出力シートとする  ⑤出力シートの出力行位置に商品名・金額を出力する  ⑥すべての行を出力するまで③~⑥を繰り返す  ~行ループここまで~ ⑦処理終了

という感じになると思います。

この中で使用する命令は、ループ処理やシート作成、セル内容のコピーなど、ExcelVBAとして初歩的なコーディングだけで実現できます。
合計計算の部分は、セルにSUM関数をセットするようにしてもいいですし、ループ処理の中で加算しておいて、結果の値を出力してもいいでしょう。

これをもとにコードを調べ、書き始めて、どこかつまづくところがあればまたご質問ください。
その時は喜んでアドバイスさせていただきます。

最後に

余談ですが、この内容で純粋に集計結果を知りたいだけなら、私ならマクロなど使用しません。
Excel自体の集計機能でもできそうですし、フィルター機能とSUBTOTAL関数の組み合わせでも十分できるからです。

どうしても「商品コードごとにシートを分けたい」という場合は、マクロでの処理が必要になると思います。

苦言が多くなってしまいましたが、参考になれば幸いです。

投稿2018/01/04 05:08

jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

マクロ使わなくても、数式でできると思いますよ?
COUNTIF、SUMIF

投稿2018/01/04 04:59

ExcelVBAer

総合スコア1175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問