回答編集履歴

3

追記

2021/06/09 06:20

投稿

YAmaGNZ
YAmaGNZ

スコア10258

test CHANGED
@@ -51,3 +51,75 @@
51
51
 
52
52
 
53
53
  例でいいので入力データと出力データがあったほうが意図が伝わりやすいかと思います。
54
+
55
+
56
+
57
+
58
+
59
+ ### 追記
60
+
61
+
62
+
63
+ > areaName.Add extractedData
64
+
65
+ が行われていない為、空白になりえませんか。
66
+
67
+
68
+
69
+ Dictionaryについて勘違いされているようです。
70
+
71
+
72
+
73
+ 上記のように
74
+
75
+ A,1
76
+
77
+ B,2
78
+
79
+ C,3
80
+
81
+ A,2
82
+
83
+ とデータがあった場合、areaNameは
84
+
85
+ A,1
86
+
87
+ B,2
88
+
89
+ C,3
90
+
91
+ とAddされたデータしか格納されていませんのでk=4の時に何もAddしていない場合はareaNameは3件と変化しません。
92
+
93
+ なので空白データは存在しません。
94
+
95
+ 重複したデータをただ処理したくないだけであれば
96
+
97
+ ```VBA
98
+
99
+ For j = 1 To lineNum
100
+
101
+
102
+
103
+ 'キーがまだ存在してないのなら値を配列に追加/常にキー列(A列)を取得するので列固定
104
+
105
+ If Not areaName.Exists(extractedData(k, 1)) Then
106
+
107
+ 'A列を配列に追加
108
+
109
+ '値が重複→その時のindexNumberのitemは空のままだから重複回数分をマイナス
110
+
111
+ areaName.Add extractedData(k , 1), k
112
+
113
+
114
+
115
+ End If
116
+
117
+ k = k + 1
118
+
119
+ Next
120
+
121
+ ```
122
+
123
+ といった感じで処理しなければいいだけです。
124
+
125
+ (他の部分の処理に関しては見ていません)

2

誤字修正

2021/06/09 06:20

投稿

YAmaGNZ
YAmaGNZ

スコア10258

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  `extractedData(k, 1)`は`D`なのでDictionaryにはキーが存在しないことになります。
18
18
 
19
- `A`が重複しているので`d`は加算され`1`となっているはずです。
19
+ `A`が重複しているので`d`は加算され`1`となっているはずです。
20
20
 
21
21
  そしてAddする時に`d`を引き算すると`k - d = 4`となり`A`をAddしようとします。
22
22
 

1

修正

2021/06/09 05:44

投稿

YAmaGNZ
YAmaGNZ

スコア10258

test CHANGED
@@ -16,9 +16,9 @@
16
16
 
17
17
  `extractedData(k, 1)`は`D`なのでDictionaryにはキーが存在しないことになります。
18
18
 
19
- そしてAddする時に`A`が重複しているたので`d`は加算され`1`となっているはずです。
19
+ `A`が重複しているたので`d`は加算され`1`となっているはずです。
20
20
 
21
- こで`d`を引き算すると`k - d = 4`となり`A`をAddしようとします。
21
+ してAddする時に`d`を引き算すると`k - d = 4`となり`A`をAddしようとします。
22
22
 
23
23
  そうするとすでにDictionaryにはAのキーが存在しますから「このキーは既にこのコレクションの要素に割り当てられています」とエラーになります。
24
24