いつも参考にさせていただいております。
仕事で行き詰ってしまい、質問しました。
アドバイスをいただきたくお願いいたします。
エクセルのマクロを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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- Visual Basic(VBA) VBA 最終行まで数式をコピーする 3 2023/01/03 15:44
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
Excelマクロのエラーを解決した...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
ExcelのVBAのマクロで他のシー...
-
【Excel VBA】Worksheets().Act...
-
実行時エラー1004「Select メソ...
-
同じ作業を複数のシートに実行...
-
実行時エラー'1004': WorkSheet...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
エクセルのシート名変更で重複...
-
XL:BeforeDoubleClickが動かない
-
VBAでオブジェクト変数にsetし...
-
VBA 最終行まで数式をコピーする
-
エクセルVBA Ifでシート名が合...
-
VBA 検索して一致したセル...
-
ブック名、シート名を他のモジ...
-
Excel マクロについての相談
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報