質問するログイン新規登録

回答編集履歴

2

追記

2021/06/10 11:34

投稿

jinoji
jinoji

スコア4592

answer CHANGED
@@ -1,4 +1,35 @@
1
+ 実はこんな感じでいけるのかもしれない。
1
2
  ```VBA
3
+ Sub sample1()
4
+
5
+ '元シートから地域名、地域コードを取得
6
+ Dim ws As Worksheet, rng As Range
7
+ Set ws = Worksheets(1)
8
+ Set rng = ws.Range(ws.Range("A4"), ws.Cells(ws.Rows.Count, 1)).Resize(, 2)
9
+
10
+ '新シートに貼り付け、重複を削除
11
+ Dim newSheet As Worksheet
12
+ Set newSheet = Worksheets.Add(After:=ws)
13
+ rng.Copy Destination:=newSheet.Cells(1, 1)
14
+ newSheet.UsedRange.RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo
15
+
16
+ '地域名ごとに売上金額を合算する数式をセット
17
+ Dim wFormula
18
+ wFormula = Replace("=SUMIF(Sheet1!$A:$A,$A1,Sheet1!D:D)", "Sheet1", ws.Name)
19
+ newSheet.UsedRange.Offset(, 2).Resize(, 13).Formula = wFormula
20
+
21
+ '計算結果を値で再セット
22
+ newSheet.UsedRange.Value = newSheet.UsedRange.Value
23
+
24
+ End Sub
25
+
26
+ ```
27
+
28
+
29
+ ---
30
+ (追記前)
31
+
32
+ ```VBA
2
33
  Sub sample()
3
34
 
4
35
  Dim lineNum As Integer

1

修正

2021/06/10 11:33

投稿

jinoji
jinoji

スコア4592

answer CHANGED
@@ -33,7 +33,7 @@
33
33
  areaDic.Add areaName, fees
34
34
  Else
35
35
  dicData = areaDic(areaName)
36
- For i = 2 To UBound(fees)
36
+ For i = 3 To UBound(fees)
37
37
  fees(i) = fees(i) + dicData(i)
38
38
  Next
39
39
  areaDic(areaName) = fees