
VBAが分かりかけてきた初心者です。皆様のお力添えをお願いいたします。
同じ行に重複する項目があり、金額だけ違う一覧があります。
A4:D4はセルを結合して「2020年9月」、Eを飛ばしてF4:I4を結合して「2020年10月」、Jを飛ばしてと毎月つながる元データのシートがあります。
A5 B5 C5 D5
管理番号 施設名 数 金額
A,B,Cは重複する可能性があり、1つにまとめ、
Dの金額を合計したいです。
A,B,Cはその都度違います。
このような場合のVBAを教えてください。
画像を添付しますので、ご教示をお願い致します。
お手数ではございますが、どうぞよろしくお願いいたします。

No.7ベストアンサー
- 回答日時:
>A,B,Cは重複する可能性があり、1つにまとめ、Dの金額を合計したいです。
A,B,Cはその都度違います。C列の「数」は集計項目では無いということで良いんですね?
それを前提にコードを書いてみました。こんな感じです。
もし、「数」の集計が必要な場合は、コードを理解して、ご自分で改修してくださいね!!
ちなみに、元データのシート名は、「Sheet1」になっていますので、必要に応じて修正して下さい。
Sub sample()
Dim ra As Range
Dim rc As Range
Dim r As Range
For Each ra In Sheets("Sheet1").Rows(4).SpecialCells(xlCellTypeConstants, 23).Areas
Set rc = ra.CurrentRegion
rc.Copy
With Sheets.Add(After:=Sheets(Sheets.Count))
.Paste
With Range(.Range("A2"), .Cells.SpecialCells(xlCellTypeLastCell))
.RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes
End With
For Each r In .Columns("D").SpecialCells(xlCellTypeConstants, 1)
r.Value = WorksheetFunction.SumIfs(rc.Columns("D"), rc.Columns("A"), r.Offset(, -3), rc.Columns("B"), r.Offset(, -2))
Next r
End With
Next ra
End Sub
ご返信が遅くなり申し訳ございません。
>C列の「数」は集計項目では無いということで良いんですね?
私のつたない説明でご理解していただき大変ありがたいです。
思っていた通りに出来ました。本当に感謝いたします!
勉強させていただきました。またわからないことが出来た時にお世話になると思いますが、その際はどうぞよろしくお願いいたします。
心からお礼を申し上げます。
No.5
- 回答日時:
テータベース的な使い方をする場合、月別にせず全データを縦方向に記入していき、年月のデータはもう一列追加してそこに記入するのがよいです。
あと、セルの結合は避けたほうがよいです。
自分なら添付図のようなデータにして、とにかく縦方向にデータを蓄積していきます。
そして、フィルター機能を使うことで、月別や管理番号別に表示することは容易になります。
当然、条件ごと(2020年9月のみや施設『あ』のみなど)の合計値や平均値を出すことも容易です。その場合には、SUM関数やAVERAGE関数ではなくSUBTOTAL関数を使います。
いまからでも遅くないと思いますよ。

No.4
- 回答日時:
月別にシートを分けちゃう人とか、結構、多いですけど、データの管理に慣れている人は、まず、やらないです!
ご質問のようなレイアウトも、それと同類です。基礎データの管理方法としては、NGです。
まずは、そこから見直した方が、今後の展開が楽になると思います。
No.3
- 回答日時:
No2です。
補足します。VBAを知らない人にとっては、VBAを作った人が保守をするのが当たり前だと思っています。難色をしめしたら「無責任だ」、「勝手にこんなのつくって」、あげくのはては「こんなのは使い物にならない」なんていわれますよ。(経験者です)
VBAは作りやすいですが、セルの位置などに依存します。ですから一列挿入したり移動したらそのセルの座標を変更しなければなりません。このあたりは関数でも同じなのですが、関数の方がはるかに簡単です。関数ならばVBAほど敷居が高くありません。
ですのでVBAではなく関数で作成することをお勧めします。
No.2
- 回答日時:
合計の集計ならばSUMIF関数で可能だと思いますが……
VBAで組むと条件が変わった場合などのメンテナンスが面倒ですよ。
特に担当者がかわったりすると、いつまでたってもヘルプディスクになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- Excel(エクセル) エクセルのフィルターを複数シートに連動させたいです。 エクセルファイルに15シートあります。 そのう 2 2022/05/01 21:47
- クレジットカード 楽天カードのサポートが不便なのは何故? 1 2023/02/20 11:03
- Excel(エクセル) Googleスプレッドシートを使って、別シートに それぞれの合計を出したい。 1 2022/04/25 14:07
- Excel(エクセル) Excelについて 6 2023/03/03 16:19
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAで重複データを合算したい
Excel(エクセル)
-
重複行を削除して数値を合算したい(合算列が多い)
Excel(エクセル)
-
重複するIDのデータを1行にまとめるvbaのコード
Access(アクセス)
-
-
4
重複データの合算(VBA)
Visual Basic(VBA)
-
5
vba 重複データ合算
Visual Basic(VBA)
-
6
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
7
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
8
VBAで重複データを合算したい(時間)
Excel(エクセル)
-
9
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
10
エクセルvbaで重複データを加算したい
Excel(エクセル)
-
11
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
12
重複データをまとめて合計を合算する
Visual Basic(VBA)
-
13
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
14
【Excel VBA】複数ある特定の文字列を含む行を削除
Excel(エクセル)
-
15
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
16
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
17
VBA 複数ファイルの同じ項目を一行に合計したいです
Excel(エクセル)
-
18
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
19
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
20
エクセル マクロで数値が変った時行挿入できますか
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2010 合計時間の算出
-
Excel 集計関数を教えてください
-
エクセル、リソース不足エラー...
-
同一Book内の複数のsheetから日...
-
成績管理ソフト
-
同一行上に指定範囲の数字が何...
-
Excelで統合の機能を使いたい
-
エクセルの集計行における全項...
-
フィルタをしても最下行を常に...
-
Excelの数式について
-
エクセルで縦計算を自動で
-
エクセルでアンケートのデータ...
-
Excelでの集計表の作り方
-
EXCEL関数
-
エクセルのマクロで特定の文字...
-
ピボットテーブルでは時間の表...
-
エクセルについてご教示願いたい。
-
ピボットテーブル 合計の表示
-
EXCELで複数シートの集計を別シ...
-
Excelの画面
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【エクセル】オートフィルタで...
-
フィルタをしても最下行を常に...
-
ピボットテーブルでは時間の表...
-
VBAで重複する項目を1つにまと...
-
エクセルで特定の色の数字だけ...
-
エクセル、リソース不足エラー...
-
ピボットを更新すると数式が入...
-
ピボットテーブルのページエリ...
-
ピボットの集計方法「合計」初...
-
いい機能だけど、毎回めんどく...
-
エクセル 関数を使った横方向の...
-
アンケートの集計
-
excelで集計の合計を降順に並べ...
-
ピボットテーブルで同じデータ...
-
複数のピボットテーブルを一括...
-
Excel : 二通りの合計が合わな...
-
EXCEL 重複データの集計の仕方
-
Excelの集計結果だけをコピー貼...
-
エクセルの小計を自動的に色づ...
-
こういう管理ソフトはないでし...
おすすめ情報
月別で別のシートに管理番号の合計値を表示したいと思っております。
よろしくお願いいたします。
アドバイスをありがとうございます。関数でも何回も試してはみたのですが、管理番号が毎回違う、件数も多い等、毎回時間を取られてしまいもっと時短したいと思い助けていただきたく質問させていただきました。自力でももう少し頑張ってみますが出来ればVBAで行いたいと思っております。よろしくお願いいたします。