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

回答編集履歴

1

追記

2019/02/21 00:06

投稿

ttyp03
ttyp03

スコア17002

answer CHANGED
@@ -19,4 +19,45 @@
19
19
  配列を使って速くなるのは、最初の取り込むところだけですね。
20
20
  それもどれだけ速くなるかは実際にやってみないとわかりません。
21
21
 
22
- 2の集計も同じ要領でできます。
22
+ 2の集計も同じ要領でできます。
23
+
24
+ 追記
25
+ ハッシュのサンプルを追記します。
26
+ ```VBA
27
+ Dim sexstr(2) As String
28
+ Dim all As Object
29
+ Dim place As String
30
+ Dim sex As Integer
31
+ Dim cnt As Object
32
+ Dim pkey As Variant
33
+ Dim skey As Variant
34
+
35
+ ' 全体を管理する連想配列
36
+ Set all = CreateObject("Scripting.Dictionary")
37
+
38
+ ' 集計対象
39
+ place = "鹿児島県"
40
+ sex = 1
41
+
42
+ ' 地名のキーが作成されているか
43
+ If all.Exists(place) Then
44
+ ' 作成されているので性別毎のカウントアップ
45
+ Set cnt = all(place)
46
+ cnt(sex) = cnt(sex) + 1
47
+ Else
48
+ ' 作成されていないので地名毎・性別毎のカウント用連想配列を作成
49
+ Set cnt = CreateObject("Scripting.Dictionary")
50
+ cnt(sex) = 1
51
+ Set all(place) = cnt
52
+ End If
53
+
54
+ ' 出力
55
+ sexstr(1) = "男"
56
+ sexstr(2) = "女"
57
+ For Each pkey In all
58
+ For Each skey In all(pkey)
59
+ Debug.Print pkey & " " & sexstr(skey) & " " & all(pkey)(skey)
60
+ Next
61
+ Next
62
+
63
+ ```