- 締切済み
Excelの集計マクロについて質問です
Excelの集計マクロについて質問です 少々ややこしいのですが、情報を調べていても中々分からなかったのでアドバイスや解決策を頂けますと幸いです。 画像を添付いたしましたので参照しつつ見ていただけると助かります。 2行を一つの入力データとし、名称が4セルの構成になっており シートが集計用シートとデータ入力用シートというものになっています。 そして入力用シートをコピーして、入力内容を増やしていきます。 データ(集計用)にデータ(1)で入力されたものを、データ(集計用)のデータ(1)列に転記していき データ(2)で、データ(1)とかぶるものはデータ(2)列の同じ名称の行に データ(1)で発生しなかったデータがある場合後ろに追記していき、これがデータ(数値)が最小データ(1)、最大データ(40)のシートがある所まで集計していく形にしたいのです。 名称が4セルとなっているのは、1列目が同じ名称の物が来ることがあり、2列目にその細かい違いがでるので4セルとなっています。名称の中には、英文字の大文字と小文字だけの違いのものがあり、それを区別して集計することもあります。(物品Aと物品a) 簡単にできそうかな?と思っていたのですが、各シートを集計用シートの対応の列に転記する事や ないものをどんどん下へ追記していく、大文字と小文字を区別させるといういくつもの考え方が必要で調べても中々望む形を得られなかったので質問させていただきました。 少々複雑(?)かもしれませんが、なにとぞ宜しくお願い致します
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- mt2008
- ベストアンサー率52% (885/1701)
やりたい事が多すぎて回答が付けにくいです。 もう少し知りたいポイントをしぼったほうがいいと思います。 とりあえず、データ入力シートから集計用シートに重複無しの名称リストを作成する所のサンプルを……。 Sub Sample() '作業用シートを先頭に追加 Sheets.Add before:=Sheets(1) '作業用シートに項目名をコピペ Sheets("データ01").Range("A1:B1").Copy With Sheets(1) .Range("A1").PasteSpecial Paste:=xlPasteValues 'ループを回して「データ」で始まるシートの名称データを作業用シートにコピー Dim sh As Worksheet For Each sh In Sheets If Left(sh.Name, 3) = "データ" Then sh.Range("A2:B" & sh.Range("A1").End(xlDown).Row).Copy ’A列が空白になる所までコピー '作業用シートの最下行に貼り付け .Range("A" & (.Cells(Rows.Count, 1).End(xlUp).Row + 1)).PasteSpecial Paste:=xlPasteValues End If Next sh '作業用シートで、名称の重複を削除して集計用シートに貼り付け .Columns("A:B").AdvancedFilter Action:=xlFilterInPlace, Unique:=True .Columns("A:B").Copy End With Sheets("データ集計用").Range("A1").PasteSpecial Paste:=xlPasteValues '作業用シートを削除 Application.DisplayAlerts = False Worksheets(1).Delete Application.DisplayAlerts = True End Sub