回答編集履歴

8

①用編集

2018/02/07 09:07

投稿

jinshan
jinshan

スコア107

test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
  var itemDataResult_b = [];//買い物リスト集計結果格納用配列の宣言:②
44
44
 
45
- var itemCounter = 0;//アイテム種数カウンタ変数宣言と代入
45
+ var itemCounter = 0;//アイテム種数カウンタ変数宣言と代入(①に必要)
46
46
 
47
47
 
48
48
 

7

買い物リスト取得部の変更

2018/02/07 09:07

投稿

jinshan
jinshan

スコア107

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  var Sh = Sp.getActiveSheet();//アクティブシートオブジェクト代入
20
20
 
21
-
21
+
22
22
 
23
23
  var itemData = [];//買い物リスト格納用配列の宣言
24
24
 
@@ -26,17 +26,13 @@
26
26
 
27
27
  var lastRow = Sh.getLastRow();//データの入っている最終行数の取得
28
28
 
29
- Logger.log('最終行数:' + lastRow);//ログ出力(表示→ログにて実行後見られる)
29
+ Logger.log('最終行数:' + lastRow);//ログ出力
30
30
 
31
-
32
31
 
33
- for (var i = 0 ; i<lastRow-StartRow ; i++){//買い物リスト行数分繰り返し処理
34
32
 
35
- Logger.log('A' + (i+StartRow) + 'の内容:' + Sh.getRange(i+StartRow, 1).getValue());
33
+ itemData = Sh.getRange(StartRow,1,lastRow-StartRow,1).getValues()//配列itemDataにセル値を押し込む
36
34
 
37
- itemData.push(Sh.getRange(i+StartRow, 1).getValue());//配列itemDataにセル値を押し込む
35
+
38
-
39
- }
40
36
 
41
37
  Logger.log('セルデータ取得配列:' + itemData);
42
38
 
@@ -44,7 +40,7 @@
44
40
 
45
41
  var itemDataResult_a = [[]];//買い物リスト集計結果格納用配列の宣言:①
46
42
 
47
-  var itemDataResult_b = [];//買い物リスト集計結果格納用配列の宣言:②
43
+ var itemDataResult_b = [];//買い物リスト集計結果格納用配列の宣言:②
48
44
 
49
45
  var itemCounter = 0;//アイテム種数カウンタ変数宣言と代入
50
46
 
@@ -52,57 +48,53 @@
52
48
 
53
49
  for (var i = 0; i<itemData.length ; i++){
54
50
 
55
- if (itemData[i] == ""){continue}//カウント済のアイテムで空白が既にセットされていればスルー
51
+ if (itemData[i][0] == ""){continue}//カウント済のアイテムで空白が既にセットされていればスルー
56
52
 
57
53
  var tmpCounter = 1;//アイテム発生数カウンタ変数宣言と代入
58
54
 
59
55
  for (var j = i+1 ;j<itemData.length; j++){
60
56
 
61
- if (itemData[i] == itemData[j]){//同じアイテムが後方に見つかったら
57
+ if (itemData[i][0] == itemData[j][0]){//同じアイテムが後方に見つかったら
62
58
 
63
59
  tmpCounter += 1;//アイテム発生数カウンターに1加える
64
60
 
65
- itemData[j]="";//同じアイテムの2個目以降のデータを空白にする
61
+ itemData[j][0]="";//同じアイテムの2個目以降のデータを空白にする
66
62
 
67
63
  }
68
64
 
69
65
  }
70
66
 
71
- itemDataResult_a[itemCounter]=[itemData[i],tmpCounter];//①集計結果配列へ格納
67
+ itemDataResult_a[itemCounter]=[itemData[i][0],tmpCounter];//①集計結果配列へ格納
72
68
 
73
- itemDataResult_b.push([itemData[i],tmpCounter])//②集計結果配列へ格納
69
+ itemDataResult_b.push([itemData[i][0],tmpCounter])//②集計結果配列へ格納
74
70
 
75
71
  itemCounter += 1//アイテム種数カウンタに1を加える
76
72
 
77
73
  }
78
74
 
75
+
76
+
77
+ //①シートC3~D列に集計結果配列を一斉書き込み
78
+
79
79
  Logger.log('集計配列_a:' + itemDataResult_a);
80
-
81
- Logger.log('集計配列_b:' + itemDataResult_b);
82
-
83
-
84
-
85
-
86
80
 
87
81
  Sh.getRange(1,3,lastRow,2).clearContent()//①シートC~D列をクリア
88
82
 
89
83
  Sh.getRange(1,3).setValue('発生数itemDataResult_a')//①C1に表題セット
90
84
 
91
- //①シートC3~D列に集計結果配列を一斉書き込み
92
-
93
85
  Sh.getRange(3,3,itemDataResult_a.length,2).setValues(itemDataResult_a);
94
86
 
87
+
88
+
95
-
89
+ //②シートE3~F列に集計結果配列を一斉書き込み
90
+
91
+ Logger.log('集計配列_b:' + itemDataResult_b);
96
92
 
97
93
  Sh.getRange(1,6,lastRow,2).clearContent()//②シートE~F列をクリア
98
94
 
99
95
  Sh.getRange(1,6).setValue('発生数itemDataResult_b')//②E1に表題セット
100
96
 
101
- //②シートE3~F列に集計結果配列を一斉書き込み
102
-
103
97
  Sh.getRange(3,6,itemDataResult_b.length,2).setValues(itemDataResult_b);
104
-
105
-
106
98
 
107
99
  }
108
100
 

6

再編集3

2018/02/07 09:03

投稿

jinshan
jinshan

スコア107

test CHANGED
@@ -42,9 +42,9 @@
42
42
 
43
43
 
44
44
 
45
- var itemDataResult_a = [[]];//買い物リスト集計結果格納用配列の宣言:①シート上にデータを書き込みたい場合
45
+ var itemDataResult_a = [[]];//買い物リスト集計結果格納用配列の宣言:①
46
46
 
47
- var itemDataResult_b = [];//買い物リスト集計結果格納用配列の宣言:②集計結果配列のみを得られればよい場合
47
+  var itemDataResult_b = [];//買い物リスト集計結果格納用配列の宣言:②
48
48
 
49
49
  var itemCounter = 0;//アイテム種数カウンタ変数宣言と代入
50
50
 
@@ -68,9 +68,9 @@
68
68
 
69
69
  }
70
70
 
71
- itemDataResult_a[itemCounter]=[itemData[i],tmpCounter];//①シート上にデータを書き込みたい場合
71
+ itemDataResult_a[itemCounter]=[itemData[i],tmpCounter];//①集計結果配列へ格納
72
72
 
73
- itemDataResult_b.push([itemData[i],tmpCounter])//②集計結果配列のみを得られればよい場合
73
+ itemDataResult_b.push([itemData[i],tmpCounter])//②集計結果配列へ格納
74
74
 
75
75
  itemCounter += 1//アイテム種数カウンタに1を加える
76
76
 

5

再編集2

2018/02/07 08:41

投稿

jinshan
jinshan

スコア107

test CHANGED
@@ -1,6 +1,10 @@
1
1
  スクリプトでの集計例です。配列で集計結果を得られます。
2
2
 
3
3
  itemDataResult_aとitemDataResult_bいずれも同じ結果を返します。
4
+
5
+
6
+
7
+ A3以下にデータ部分があるものとします。
4
8
 
5
9
 
6
10
 
@@ -101,3 +105,5 @@
101
105
 
102
106
 
103
107
  }
108
+
109
+ ```

4

再編集

2018/02/07 08:37

投稿

jinshan
jinshan

スコア107

test CHANGED
@@ -92,11 +92,11 @@
92
92
 
93
93
  Sh.getRange(1,6,lastRow,2).clearContent()//②シートE~F列をクリア
94
94
 
95
- Sh.getRange(1,6).setValue('発生数')//②E1に表題セット
95
+ Sh.getRange(1,6).setValue('発生数itemDataResult_b')//②E1に表題セット
96
96
 
97
97
  //②シートE3~F列に集計結果配列を一斉書き込み
98
98
 
99
- Sh.getRange(3,6,itemDataResult_a.length,2).setValues(itemDataResult_b);
99
+ Sh.getRange(3,6,itemDataResult_b.length,2).setValues(itemDataResult_b);
100
100
 
101
101
 
102
102
 

3

AとBは結果が同じ

2018/02/07 08:35

投稿

jinshan
jinshan

スコア107

test CHANGED
@@ -1,8 +1,6 @@
1
1
  スクリプトでの集計例です。配列で集計結果を得られます。
2
2
 
3
- itemDataResult_aとitemDataResult_bで集計結果配列のセットのされ方の違い
3
+ itemDataResult_aとitemDataResult_bいずれも同じ結果を返します。
4
-
5
- デバッグモードを利用して途中で実行を一時停止して確認してみてください。
6
4
 
7
5
 
8
6
 
@@ -84,14 +82,22 @@
84
82
 
85
83
  Sh.getRange(1,3,lastRow,2).clearContent()//①シートC~D列をクリア
86
84
 
87
- Sh.getRange(1,3).setValue('発生数')//①C1に表題セット
85
+ Sh.getRange(1,3).setValue('発生数itemDataResult_a')//①C1に表題セット
88
-
89
-
90
86
 
91
87
  //①シートC3~D列に集計結果配列を一斉書き込み
92
88
 
93
89
  Sh.getRange(3,3,itemDataResult_a.length,2).setValues(itemDataResult_a);
94
90
 
91
+
92
+
93
+ Sh.getRange(1,6,lastRow,2).clearContent()//②シートE~F列をクリア
94
+
95
+ Sh.getRange(1,6).setValue('発生数')//②E1に表題セット
96
+
97
+ //②シートE3~F列に集計結果配列を一斉書き込み
98
+
99
+ Sh.getRange(3,6,itemDataResult_a.length,2).setValues(itemDataResult_b);
100
+
101
+
102
+
95
103
  }
96
-
97
- ```

2

itemDataResult_aとitemDataResult_bno

2018/02/07 08:34

投稿

jinshan
jinshan

スコア107

test CHANGED
File without changes

1

編集

2018/02/07 08:30

投稿

jinshan
jinshan

スコア107

test CHANGED
@@ -1,6 +1,6 @@
1
- スクリプトの集計例です。配列で集計結果を得られます。
1
+ スクリプトの集計例です。配列で集計結果を得られます。
2
2
 
3
- itemDataResult_aとitemDataResult_bで配列のセットのされ方の違いを
3
+ itemDataResult_aとitemDataResult_bで集計結果配列のセットのされ方の違いを
4
4
 
5
5
  デバッグモードを利用して途中で実行を一時停止して確認してみてください。
6
6