No.3ベストアンサー
- 回答日時:
こんばんは!
横からお邪魔します。
「集計」をしたいSheetはシート見出しの一番左側にあり、
2015年5月~2016年6月のシートはシート見出しの2番目以降にあるという前提です。
同姓同名があったとしても、おそらく「番号」の重複はないと思いますので
番号で検索しています。
元データは各シートともA~D列にあるとします。
標準モジュールにしてください。
Sub Sample1()
Dim k As Long, lastRow As Long, wS As Worksheet
Application.ScreenUpdating = False
With Worksheets(1)
.Cells.Clear
Worksheets(Worksheets.Count).Range("A:D").Copy .Range("A1")
For k = 2 To Worksheets.Count
Set wS = Worksheets(k)
lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row
Range(wS.Cells(2, "A"), wS.Cells(lastRow, "D")).Copy .Cells(Rows.Count, "F").End(xlUp).Offset(1)
Next k
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
With Range(.Cells(2, "D"), .Cells(lastRow, "D"))
.Formula = "=SUMIF(G:G,B2,I:I)"
.Value = .Value
End With
.Range("F:I").Clear
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
※ 「集計」を行うSheetのF~I列を作業用の列として使っていますので
E列以降にはデータがないとします。m(_ _)m
返事がとても遅くなってしまい申し訳ありません。
ご指示通り実行したところ思った処理ができました。
これから内容を噛み砕いて理解していくるつもりです。
今回はありがとうございました、ベストアンサーにさせていただきます。
No.2
- 回答日時:
んーと、「2016年6月」シートの名前または番号の順で集計を行いたいという事でしょうか。
それさえなければ、普通にシートごとに「番号」で並べ替えをして「串刺し計算」すればよいだけのような気がするんですけど、それではダメなんですか?
※番号に抜けが無いことが条件です。
集計のシートに
=SUM('2015年5月:2016年6月'!C1)
のようにすると、
「2015年5月」シートから「2016年6月」シートまでの間の「C1セル」の合計を表示することができます。
・・・余談・・・
この方法は合計したいシートの範囲を簡単に変更することができます。
新規にシートを2つ作成し、それぞれ「ここから」「ここまで」とシート名を付けます。
そして上の数式を
=SUM('ここから:ここまで'!C1)
とし、合計したいシートを新規に作成した「ここから」「ここまで」のシートで挟みます。
これで二つのシートに挟まれたシートの合計を求められます。
「2015年5月」シートの左に「ここから」シート、「2016年6月」シートの右側に「ここまで」シートを配置すれば、そのままの結果を得られます。
(「2015年8月」は除外したい…と言うときは、この2つのシートに挟まれない場所へシートを移動させれば良いとか応用もできます)
ご回答ありがとうございます。
一度番号順にならべ変えて試みようとおもったのですが
2015年5月時点でいた人が2016年6月時点ではいなくなっているなどしているので
ずれてしまい、結果として合算が間違ってしまう形になってしまいました。
ですが、この方法はとてもわかりやすく
そのほかの業務には使えそうなので是非参考にさせていただきたいと思います。
ありがとうございました。
No.1
- 回答日時:
VBAならばもちろん出来ます。
①「集計」のシートを作成し、それに2016年6月の並び順で作成すればよいのでしょうか?
②データの数は総てのシートが同じでしょうか?
→ 違っている場合で2016年6月に無かった場合はどうするのですか?
③ データは3列だけしかないのでしょうか?
④ タイトル行はありますか?
早速のご質問ありがとうございます。
①はい、その形で大丈夫です。
②2016年6月には全てのデータ(名前)がありますが
それ以前には無いデータがちらほらあります。
③すみません、実際のデータは以下の形で4列でした
所属番号 番号 名前 数値
④1行目がタイトル行になっています。
こちらは削除も可能です。
こちらで大丈夫でしょうか?
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 前の(左隣の)シートを連続参照するように、あとから変更したい 1 2023/02/22 00:51
- Excel(エクセル) エクセルの数式について ブック内の別シートの値の含まれたセルの個数を集計したい 全シート一覧のシート 1 2022/07/21 19:28
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Excel(エクセル) エクセルのVBAで上の表の最下行を求める 4 2022/09/14 15:22
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- Excel(エクセル) エクセル シート比較で書式を変えるを繰り返したい 2 2023/05/05 11:25
- Excel(エクセル) 簡単なエクセルマクロについて 4 2023/02/20 10:22
- Excel(エクセル) ある数値に対して、値を返す数式についてです 2 2022/09/13 22:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
特定のシート名のシートのみ除...
-
特定のシートのみ再計算させな...
-
Accessのテーブルを既存のExcel...
-
EXCELの図形(テキストボックス)...
-
accessへエクセルの複数のシー...
-
【Excel VBA】データ貼り付け先...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルマクロでシート名を条...
-
アクセスからエクセルのシート...
-
Wordで差し込み印刷時に表示す...
-
エクセルのシート名の変更がで...
-
InputBoxに入力した言葉をシー...
-
EXCELで存在しないシート...
-
ワークシートそのものの色を変...
-
PowerQueryで行数の指定はでき...
-
エクセルで、シートの名前を変...
-
ハイパーリンクでジャンプした...
-
エクセル、特定のシートにパス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
エクセルで複数のシートに画像...
-
ハイパーリンクでジャンプした...
-
ワークシートそのものの色を変...
-
エクセルの2つのシートを並び...
-
【ExcelVBA】マクロの入ったシ...
-
エクセル、特定のシートにパス...
-
エクセルのシート連番の振り直し
-
EXCELの図形(テキストボックス)...
-
特定の複数のシートに同じ処理...
-
【Excel VBA】データ貼り付け先...
-
エクセルのシー名を二段表示に...
-
EXCELの「シートの見出し」のフ...
-
Accessのテーブルを既存のExcel...
-
Wordで差し込み印刷時に表示す...
-
accessへエクセルの複数のシー...
-
エクセル、別のシートの表をポ...
-
指定したシート名以外を非表示...
おすすめ情報