回答編集履歴

1

コード例追加

2021/10/19 10:49

投稿

itagagaki
itagagaki

スコア8402

test CHANGED
@@ -29,3 +29,59 @@
29
29
  その二次元配列の要素を、行と列の二重ループで参照して、値の置換を行い、
30
30
 
31
31
  それを`Range.setValues()`でシートに書き戻せばよいでしょう。
32
+
33
+
34
+
35
+ ---
36
+
37
+
38
+
39
+ 追記
40
+
41
+
42
+
43
+ 要望があったのでコード例を示します
44
+
45
+
46
+
47
+ ```GAS
48
+
49
+ const ss = SpreadsheetApp.getActiveSpreadsheet();
50
+
51
+ const sheet = ss.getSheetByName("シート1");
52
+
53
+
54
+
55
+ const lastRow = sheet.getRange(sheet.getMaxRows(), 2).getNextDataCell(SpreadsheetApp.Direction.UP).getRow(); //B列基準で最終行番号取得
56
+
57
+ const numRows = lastRow; // 1行目からlastRow行目までなので行数はlastRowになる
58
+
59
+ const range = sheet.getRange(1, 4, numRows, 4); // D1:G最終行
60
+
61
+ let arr = range.getValues(); // arrはnumRows行×4列の2次元配列
62
+
63
+
64
+
65
+ for (let row = 0; row < numRows; row++) {
66
+
67
+ for (let col = 0; col < 4; col++) { // 配列へのインデックスrowとcolは0から
68
+
69
+ if (arr[row][col] == "") {
70
+
71
+ arr[row][col] = "0";
72
+
73
+ }
74
+
75
+ }
76
+
77
+ }
78
+
79
+
80
+
81
+ range.setValues(arr);
82
+
83
+ ```
84
+
85
+
86
+
87
+ mapとか使うとより洗練されたコードになりますけど、わかりやすいコードにしました。