いつもお世話になります。
早速ですが、商品毎、担当毎の売上実績表をEXCELで作っています。
以下のようなEXCELシートを各々の担当毎に作成します。
A B C D E F
1 4月 5月 6月 7月
2 商品○ 合計 100 97 109 136
3 A社 50 38 27 20
4 B社 13 9 7 3
5 C社 8 10 18 33
6 D社 20 29 42 58
7 E社 9 11 15 22
8 商品△ 合計 158 170 119 183
9 A社 13 9 7 3
10 B社 33 27 40 38
11 C社 51 55 38 77
Sheet担当A ※このシート名をSheet名担当A,,,担当Eとします。(Sheet数5)
6枚目のシートを集計用とし、
A B C D E F
1 4月 5月 6月 7月
2 商品○ 合計 308 224 147 159
3 担当A 50 38 27 20 ←Sheet担当Aの2列目(C3~F3)
4 担当B 55 40 22 24 ←Sheet担当Bの2列目(C3~F3)
5 担当C 48 30 30 45 ←Sheet担当Cの2列目(C3~F3)
6 担当D 67 44 38 26
7 担当E 88 72 30 44
8 商品△ 合計 32 34 28 23 ←Sheet担当Aの8列目(C8~F8)
9 担当A 13 9 7 3 ←Sheet担当Bの8列目(C8~F8)
10 担当B 10 13 9 6
11 担当C 9 12 12 14
としてリンク貼り付けしたく考えています。
リンク貼り付けだと、例えば集計用C3は=Sheet担当A!C2、C4は=Sheet担当B!C2とセル設定する必要がありますが、結構大きな集計資料となるので、簡単にリンク貼り付け(例えば、今回は=Sheet“担当者名”!セル名と担当社名だけ違うので、担当者名だけ一括で変換する)できる方法など内でしょうか?
また、マクロについてはあまり知識がありませんが、簡単に設定できるマクロなどがあれば、教えて頂きたく考えております。
明日、(2/23)朝9時までに資料を完成させなければなりません。
どなたかご教授頂きたく、お願い致します。
※上のEXCEL例が見にくいかと思いますので、画像を添付させて頂きました。
No.1ベストアンサー
- 回答日時:
こんばんは!
Sheet見出しの1番目~5番目に各担当者分のSheetがあり、
6番目のSheetの「合計」行以外に各Sheetの「合計」行を表示するとします。
尚、コード内の「集計」としているSheet名は実際のSheet名にしてください。
標準モジュールに↓のコードをコピー&ペーストしてマクロを実行してみてください。
Sub Sample1() 'この行から
Dim i As Long, k As Long, lastRow As Long, lastCol As Long
Dim c As Range, wS As Worksheet
With Worksheets("集計") '★ 「集計」は実際のSheet名に!
Application.ScreenUpdating = False
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
'▼ 「集計」SheetのA・B列を作業用の列として挿入(元データは2列ずつ右へずれる)
.Range("A:B").Insert
With Range(.Cells(2, "A"), .Cells(lastRow, "A"))
.Formula = "=IF(C2="""",A1,C2)"
.Offset(, 1).Formula = "=A2&D2"
End With
For k = 1 To 5 'Sheet見出しの1番目~5番目までループ ★
Set wS = Worksheets(k)
lastCol = wS.Cells(1, Columns.Count).End(xlToLeft).Column
For i = 2 To wS.Cells(Rows.Count, "B").End(xlUp).Row Step 6 '各Sheetの2行目~B列最終行まで6行おきに ★
'▼ 「集計」Sheet作業列(B列)と一致する行を検索
Set c = .Range("B:B").Find(what:=wS.Cells(i, "A") & wS.Name, LookIn:=xlValues, lookat:=xlWhole)
'▼ 各Sheetの「合計」行のC列~最終列までを「集計」Sheetの
If Not c Is Nothing Then
Range(wS.Cells(i, "C"), wS.Cells(i, lastCol)).Copy
.Cells(c.Row, "E").PasteSpecial Paste:=xlPasteValues
End If
Next i
Next k
.Range("A:B").Delete
Application.ScreenUpdating = True
.Activate
.Range("A1").Select
End With
End Sub 'この行まで
こんな感じではどうでしょうか?m(_ _)m
ご教授ありがとうございます。
またお礼が遅くなりすみませんでした。
実際にはもう少し複雑なシートであったので、アドバイス頂いたものを参考に(素人なりに)種々頑張りましたが、結果旨く行きませんでした。(なのでリンク貼り付け、検索と置換を駆使して何とかして資料を作り上げました。)
マクロ(VBA)は非常に有効な手段だと思いますので、これから勉強して使いこなせるようになりたいと思います。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Visual Basic(VBA) VBAで重複データを確認したい 5 2022/10/07 16:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) エクセルVBA VLOOKUPを使ってのカウント作業 2 2023/02/19 09:03
- Excel(エクセル) Excelについて 1 2023/03/06 10:26
- Excel(エクセル) 添付写真上のExcelシートのように時間と曜日ごとに担当者が振り分けられているシートがあります。 例 1 2023/03/08 13:02
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の色の数字だけ...
-
ピボットテーブルでは時間の表...
-
フィルタをしても最下行を常に...
-
【エクセル】オートフィルタで...
-
VBAで重複する項目を1つにまと...
-
ピボットの集計方法「合計」初...
-
アンケートの集計
-
エクセル 関数を使った横方向の...
-
Excelの集計結果だけをコピー貼...
-
エクセルの小計を自動的に色づ...
-
ピボットテーブルのページエリ...
-
VLOOKUP関数とCOUNT関数等の組...
-
Excel : 二通りの合計が合わな...
-
エクセル、リソース不足エラー...
-
いい機能だけど、毎回めんどく...
-
SUBTOTALが変わってしまいます。
-
ピボットを更新すると数式が入...
-
EXCELで増減率を計算したいです
-
複数のピボットテーブルを一括...
-
ピボットテーブルの集計結果で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【エクセル】オートフィルタで...
-
エクセルで特定の色の数字だけ...
-
ピボットテーブルでは時間の表...
-
フィルタをしても最下行を常に...
-
VBAで重複する項目を1つにまと...
-
ピボットの集計方法「合計」初...
-
EXCEL 重複データの集計の仕方
-
アンケートの集計
-
ピボットを更新すると数式が入...
-
excelで集計の合計を降順に並べ...
-
複数のピボットテーブルを一括...
-
エクセルの小計を自動的に色づ...
-
いい機能だけど、毎回めんどく...
-
エクセル 関数を使った横方向の...
-
常にタイトル行と合計行を表示...
-
エクセル、リソース不足エラー...
-
Excelの集計結果だけをコピー貼...
-
EXCELで増減率を計算したいです
-
ピボットテーブルで同じデータ...
-
ピボットテーブルのページエリ...
おすすめ情報