エクセルでの質問です。
サンプルにあるように、同じシートに、元表とまとめ表があります。
まとめ表には、別シートから項目と金額が貼り付けられるようになっています。
やりたいのは、元表の項目種類を集計し、まとめて表に金額集計をしたいんです。
だけども例1、例2にあるように元表に貼付られる項目の種類、数は毎回異なり、範囲が
変わってしまう事で悩んでいます。
実はマクロでこのエクセルファイルを開くと、別エクセルファイルのデータを読込、自動で
まとめ表までの結果が計算されることを目指していて、元表に項目と金額が貼付られる
ところまで、出来たところです。
なのですが、毎回変わる元表のデータを、まとめ表に集計する所で悩んでいます。
ピボットテーブルを使えばいいのかなと思うのですが、毎回、範囲とデータが変わるため、
範囲と再計算をしなければならないと思いますが、どのようにしたらよいでしょうか?
頭の中がごちゃごちゃして判らなくなってしまいました。
マクロも詳しくなく、マクロの記憶で、なんとか組み合わせてやっている初心者です。
申し訳ありませんが、私でも判るようなレベルで教えて頂けると、助かります。
宜しくお願いいたします。サンプル見えないと困るので下にも書きます。ずれてますが
すみません。
例1 例2
シート1 シート1
まとめ表 まとめ表
項目 金額 項目 金額
1A 260 1A 250
2A 500 2B 510
3A 770 3A 20
4A 30 4B 780
6A 400
7A 500
元表 元表
項目 金額 項目 金額
1A 100 1A 100
1A 150 1A 150
1A 10 2B 10
2A 200 2B 200
2A 300 2B 300
3A 20 3A 20
3A 300 4B 300
3A 450 4B 450
4A 30 4B 30
6A 400
7A 500
No.1ベストアンサー
- 回答日時:
例えばエクセルの「統合」の機能を使い,元表を記入した都度に項目ごと集計した結果を書き出せてみます。
まず試しに「統合」の操作を実際に行ってみて,上手く使えるようになったら新しいマクロの記録で操作をマクロに録り,参考にしてみて下さい。
なお統合する際には元表の範囲の最後のセルを取得して操作しても勿論構いませんが,最後のセルを無視して十分下にある空っぽセル(たとえば6万行目まで)までを範囲指定して統合させても問題ありません。
いまマクロで元表を記入させる事までは出来ているので,ある一つの元表が「どこのセルから開始されている」かは既知です。
既存のマクロを使い,たとえばB21セルに元表の「項目」と記入されたセルがあってそれ以下のセル範囲に元データを記入したところから始めます。
sub sample1()
dim SourceRange as range
dim DestinationRange as range
set sourcerange = range("B21") '既存マクロが貼り付けた元表の「項目」セルを指定
set destinationrange = cells(1, sourcerange.column) ’そのセルの1行目セルにまとめるとする
destinationrange.consolidate _
sources:=activesheet.name & "!" & sourcerange.resize(60000,2).address(referencestyle:=xlR1C1), _
function:=xlSum, _
toprow:=True, _
leftcolumn:=True, _
createlinks:=False
end sub
実際にはあなたの既存マクロが元表を作成する都度,その元表を配置したセルを基準に(上述サンプルマクロのSoucerangeにセットして)統合結果を書き出させるように組み込んで使います。
No.3
- 回答日時:
こんばんは!
一例です。
元表はA・B列にあり、データは2行目からとします。
無理矢理って感じの方法です。
操作したいSheet見出し上で右クリック → コードの表示 → VBE画面がでますので
↓のコードをコピー&ペーストしてマクロを実行してみてください。
Sub test()
Dim i, k As Long
k = Cells(Rows.Count, 1).End(xlUp).Row
Columns(1).Insert
For i = 2 To k
If WorksheetFunction.CountIf(Range(Cells(2, 2), Cells(i, 2)), Cells(i, 2)) = 1 Then
Cells(i, 1) = WorksheetFunction.SumIf(Range("B:B"), Cells(i, 2), Range("C:C"))
End If
Next i
For i = k To 2 Step -1
If Cells(i, 1) <> "" Then
Cells(i, 3) = Cells(i, 1)
Else
Rows(i).Delete (xlUp)
End If
Next i
Columns(1).Delete
End Sub
尚、一旦マクロを実行すると元に戻せませんので別Sheetにコピー&ペーストしてマクロを試してみてください。
以上、参考になれば良いのですが・・・m(__)m
No.2
- 回答日時:
ピボットテーブルのデータの更新だけなら、下記でいかがでしょうか。
データはA1から、A,B列にわたって存在し、ピボットテーブルは同じシート中に1個だけ存在するとします。
Sub test()
ActiveSheet.PivotTables(1).SourceData = ActiveSheet.Name & "!" & Range(Range("A1"), Range("A" & Rows.Count).End(xlUp)).Resize(, 2).Address
End Sub
同じシート内なら、Activesheet.Name & "!" &
は不要かもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
- Excel(エクセル) Excel2016 行間を詰めたい&同じカテゴリなら上位2つだけを表示したい 5 2022/06/03 12:19
- その他(ビジネス・キャリア) エクセルで一覧表を作るときのレイアウト、月日と項目の配置について相談です。 2 2023/04/11 09:37
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA コピーを有効行までループ...
-
Excelで連続印刷をするマクロ
-
条件に応じて特定の行を非表示...
-
EXCELで指定範囲に一括し...
-
Excel にて非表示行を探すワー...
-
エクセルでの書式ー下付きショ...
-
yyyy/mm/ddの日付に一括変換す...
-
Excel2007 セルを右方向に削除...
-
Excel(VBA)データ入力に応じて...
-
エクセルで同じ行中にある先頭...
-
wordのvbaでハイパーリンク設定...
-
Excelでセル内の数式は残し値だ...
-
EXCEL:同じセルへどんどん足し...
-
Excelで同じシートのコピーを一...
-
エクセルで前のシートを連続参...
-
EXCELで1ヶ月分の連続した日付...
-
Accessのスプレッドシートエク...
-
別シート参照のセルをシート毎...
-
日報をエクセルで作成したいの...
-
VBAでシートコピー後、シート名...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
条件に応じて特定の行を非表示...
-
Excelでセル内の数式は残し値だ...
-
Excel2007で、太字にした行のみ...
-
Excelで連続印刷をするマクロ
-
「マクロ」の足し算の式を教え...
-
エクセル VBA 小数点を含む数字...
-
エクセルで全ての数字間にカン...
-
(Excel2003)すぐ左の最後の行...
-
Excel(VBA)データ入力に応じて...
-
Excel にて非表示行を探すワー...
-
エクセルで、行ごとの並び替え...
-
エクセル2003でマクロをおこな...
-
excel ある部分だけをコピペし...
-
行の入れ替えってどうするの?
-
Excelで周期的に列を削除する方法
-
整数行を残し小数点の行を削除...
-
EXCEL マクロで「キーワード入...
-
VBA コピーを有効行までループ...
-
Excel2007 セルを右方向に削除...
-
wordのvbaでハイパーリンク設定...
おすすめ情報