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

回答編集履歴

2

修正

2021/06/12 07:36

投稿

jinoji
jinoji

スコア4592

answer CHANGED
@@ -1,5 +1,46 @@
1
1
  ```VBA
2
2
  Sub sample()
3
+
4
+ Dim score(1 To 5, 1 To 3)
5
+ Dim avgAry(1 To 5)
6
+ Dim sdAry(1 To 5)
7
+ Dim minAry(1 To 5)
8
+ Dim maxAry(1 To 5)
9
+
10
+ Dim i, j
11
+ For i = 1 To 5
12
+ For j = 1 To 3
13
+ score(i, j) = Cells(i + 1, j + 1).Value
14
+ Next j, i
15
+
16
+ For i = 1 To 5
17
+ Dim sm, mn, mx, sd
18
+ sm = 0
19
+ mn = 100
20
+ mx = 0
21
+ sd = 0
22
+
23
+ For j = 1 To 3
24
+ sm = sm + score(i, j)
25
+ If score(i, j) < mn Then mn = score(i, j)
26
+ If score(i, j) > mx Then mx = score(i, j)
27
+ Next
28
+
29
+ avgAry(i) = sm / 3
30
+ minAry(i) = mn
31
+ maxAry(i) = mx
32
+
33
+ For j = 1 To 3
34
+ sd = sd + (score(i, j) - avgAry(i)) ^ 2
35
+ Next
36
+ sdAry(i) = Sqr(sd / 3)
37
+ Next
38
+ End Sub
39
+
40
+ ```
41
+
42
+ ```VBA
43
+ Sub sample2()
3
44
  Dim arr As Variant
4
45
  arr = Range("B2:D6").Value
5
46
 
@@ -12,6 +53,7 @@
12
53
  Dim i
13
54
  For i = 1 To 5
14
55
  avgAry(i) = .Average(.Index(arr, i, 0))
56
+ sdAry(i) = .StDev_P(.Index(arr, i, 0))
15
57
  minAry(i) = .Min(.Index(arr, i, 0))
16
58
  maxAry(i) = .Max(.Index(arr, i, 0))
17
59
  Next

1

追記

2021/06/12 07:36

投稿

jinoji
jinoji

スコア4592

answer CHANGED
@@ -2,10 +2,19 @@
2
2
  Sub sample()
3
3
  Dim arr As Variant
4
4
  arr = Range("B2:D6").Value
5
+
6
+ Dim avgAry(1 To 5)
7
+ Dim sdAry(1 To 5)
8
+ Dim minAry(1 To 5)
9
+ Dim maxAry(1 To 5)
10
+
11
+ With WorksheetFunction
5
- Dim i, j
12
+ Dim i
6
- For i = 1 To 5
13
+ For i = 1 To 5
7
- For j = 1 To 3
14
+ avgAry(i) = .Average(.Index(arr, i, 0))
8
- Debug.Print i, j, arr(i, j)
15
+ minAry(i) = .Min(.Index(arr, i, 0))
16
+ maxAry(i) = .Max(.Index(arr, i, 0))
9
- Next j, i
17
+ Next
18
+ End With
10
19
  End Sub
11
20
  ```