いつも参考にさせていただいております。
仕事で行き詰ってしまい、質問しました。
アドバイスをいただきたくお願いいたします。
エクセルのマクロをVBで作成したいのですが、
以下のような操作を行いたいと考えております。
Aシートが存在します。
■Aシート
ID 名前 光熱費
001 上田 100
001 上田 300
002 丸本 300
002 丸本 0
002 丸本 200
003 土井 100
これをBシートに重複しているデータをまとめて、
件数と金額の合計をもっていくような操作を考えています。
■Bシート
ID 名前 件数 光熱費
001 上田 2 400
002 丸本 3 500
003 土井 2 0
また、さらにC・D・EシートにはBシートの詳細を記載します。
■Cシート
ID 名前 光熱費
001 上田 100
001 上田 300
■Dシート
ID 名前 光熱費
002 丸本 300
002 丸本 0
002 丸本 200
(Eシートの同様に記載します)
VBA初心者のためなかなか思うようにいかず、質問させていただきました。よろしくおねがいいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんなのではどうでしょうか?
Sub sample()
'シートA以外の削除
Dim ws As Worksheet
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "A" Then ws.Delete
Next
Application.DisplayAlerts = True
'シートBの作成
Worksheets.Add(after:=Sheets(Sheets.Count)).Name = "B"
Sheets("A").Columns("A:B").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheets("B").Range("A1"), Unique:=True
With Sheets("B").Range("C2:C" & Sheets("B").Range("A" & Rows.Count).End(xlUp).Row)
.Formula = "=SUMIF(A!B:B,B2,A!C:C)"
.Copy
.PasteSpecial Paste:=xlPasteValues
End With
'明細シート作成
Dim r As Integer
'シートBのID毎をフィルタして明細シート作成
For r = 2 To Sheets("B").Range("A" & Rows.Count).End(xlUp).Row
'シートAをシートBのIDでの値で絞込み
Sheets("A").Cells.AutoFilter Field:=1, Criteria1:=Sheets("B").Range("A" & r).Value
'明細シート作成
Worksheets.Add(after:=Sheets(Sheets.Count)).Name = Chr(Asc("A") + r)
Sheets("A").Cells.SpecialCells(xlCellTypeVisible).Copy Destination:=ActiveSheet.Range("A1")
Next
'最後にAutoFilterを解除する
Sheets("A").Cells.AutoFilter
End Sub
No.2
- 回答日時:
こんにちは。
> VBA初心者のためなかなか思うようにいかず、…
思うようにいかないコードを提示されては如何でしょうか。
> 件数と金額の合計をもっていくような操作を考えています。
手作業ではできるのですよね。
集計やフィルタを使うとか、ピボットテーブルを使う、
とかで一般機能だけでできる内容と思います。
「VBA初心者」とおっしゃられるなら、まず、作業(エクセルでの操作)の手順書を書くことから始めることをお勧めします。
作業の手順書ができたら作業を記録してコードを取得し、取得したコードの編集で判らないところをご質問されては如何でしょうか。
一例でピボットテーブルを利用した方法を書いてみました。
(おおまかな作業ですが…)
本格的にマクロ化したいのであれば、シート名のチェックが必要だったり、繰り返し処理で簡便にしたりしますが、とりあえず、マクロの自動記録で作業を記録して取得したコードの編集に取り組んでみては如何でしょうか。
頑張ってください。
ワークシートを挿入して作業用シートを用意する
Aシートのデータを元に作業用シートのA1を軸にピボットテーブルを作成する
ピボットテーブルのオートフォーマットを無しにする
ピボットテーブルのオプションで総計を非表示に設定する
ステンシルレイアウトの行エリアに「ID、名前」を置く
「ID」の集計をなしにする
データエリアに「光熱費」を2回置く
一つの光熱費の集計方法を”データの個数”にして名前を「件数」にする
作業用シートをコピーし、Bシートとする
Bシートのピボットテーブルの集計結果全体をコピーする
形式を選択して貼り付けで数値化する
作業用シートに戻る
「件数」フィールドをレイアウトから削除する
光熱費の001の金額セルを選択してダブルクリックする
作成されたシートをCシートとする
作業用シートに戻る
光熱費の002の金額セルを選択してダブルクリックする
作成されたシートをDシートとする
作業用シートに戻る
光熱費の003の金額セルを選択してダブルクリックする
作成されたシートをEシートとする
作業用シートに戻る
No.1
- 回答日時:
Excel(エクセル) VBA入門:Dictionaryオブジェクトを利用する
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
Excel(エクセル) VBA入門:オートフィルタ(AutoFilter)でのデータ抽出
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
あたりが参考になるかと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのVBAのマクロで他のシー...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
エクセルVBA Ifでシート名が合...
-
シートが保護されている状態で...
-
【エクセルVBA】「Protect User...
-
別のシートから値を取得するとき
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
userFormに貼り付けたLabelを変...
-
Worksheet_Changeの内容を標準...
-
トグルボタン一部を一度にON OF...
-
重複するidをデータごとにまと...
-
VBA 検索して一致したセル...
-
VBAでオブジェクト変数にsetし...
-
Excel VBA 文字列のセルを反映...
-
excelのマクロで該当処理できな...
-
Excel VBA で自然対数の関数Ln...
-
ブック名、シート名を他のモジ...
-
エクセルのマクロでアクティブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
別のシートから値を取得するとき
-
ブック名、シート名を他のモジ...
-
実行時エラー'1004': WorkSheet...
-
Excelマクロのエラーを解決した...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
エクセルのシート名変更で重複...
-
実行時エラー1004「Select メソ...
-
VBAで同じシート名のコピー時は...
-
エクセルで通し番号を入れてチ...
-
同じ作業を複数のシートに実行...
-
Excel VBA リンク先をシート...
-
ExcelのVBAのマクロで他のシー...
-
Vba UserformからExcelシートの...
-
【Excel VBA】Worksheets().Act...
-
VBA 存在しないシートを選...
おすすめ情報