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

回答編集履歴

3

利用メソッドを一部変更

2021/09/11 04:04

投稿

mayu-
mayu-

スコア335

answer CHANGED
@@ -13,7 +13,7 @@
13
13
  return ;
14
14
  }
15
15
  // 念のため、B列に「001-nnnnn」以外のデータが紛れているケースを考慮
16
- const word = '=query(B:B,"select max(B) '
16
+ const word = '=query(B:B, "select max(B) '
17
17
  + "where B matches '^001-\d{5}$' " //紛れがない場合はこの行を削除
18
18
  + "label max(B) ''" + '", 1)';
19
19
 
@@ -23,7 +23,7 @@
23
23
  const ret = '001-'
24
24
  + (+(getValue().toString().split('-')[1]) + 1)
25
25
  .toString().padStart(5, '0');
26
- setValue('');
26
+ clearContent();
27
27
  sheet.getRange(last_row + 1, B).setValue(ret);
28
28
  }
29
29
  }
@@ -40,8 +40,8 @@
40
40
  }
41
41
  const v = sheet.getRange(2, B, last_row - 1, 1)
42
42
  .getValues()
43
- .filter(s => s[0].toString().search(/^001-\d{5}$/) > -1)
43
+ .filter(s => ~s[0].toString().search(/^001-\d{5}$/))
44
- .sort((x,y) => x > y ? -1:(x < y ? 1 : 0))[0];
44
+ .sort((x, y) => y[0].localeCompare(x[0]))[0];
45
45
  const ret = '001-'
46
46
  + (+[...v].toString().replace(/^001-/, '') + 1).toString().padStart(5, '0');
47
47
  sheet.getRange(last_row + 1, B).setValue(ret);

2

2021/09/11 04:04

投稿

mayu-
mayu-

スコア335

answer CHANGED
@@ -40,6 +40,7 @@
40
40
  }
41
41
  const v = sheet.getRange(2, B, last_row - 1, 1)
42
42
  .getValues()
43
+ .filter(s => s[0].toString().search(/^001-\d{5}$/) > -1)
43
44
  .sort((x,y) => x > y ? -1:(x < y ? 1 : 0))[0];
44
45
  const ret = '001-'
45
46
  + (+[...v].toString().replace(/^001-/, '') + 1).toString().padStart(5, '0');

1

例を追加

2021/09/10 17:58

投稿

mayu-
mayu-

スコア335

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  > ・最終行に対して「B列内の001-nnnnnの中で最大の値を検索し、
2
2
  > +1したものを付与」したいです。
3
3
 
4
- 例を載せておきます。解析はご自身でお願いしますね。
4
+ 例を載せておきます。解析はご自身でお願いしますね。
5
5
  ```GAS
6
6
  function myFunction() {
7
7
  let sheet = SpreadsheetApp.getActiveSheet();
@@ -27,4 +27,22 @@
27
27
  sheet.getRange(last_row + 1, B).setValue(ret);
28
28
  }
29
29
  }
30
+ ```
31
+ ```GAS
32
+ function sortVersion() {
33
+ let sheet = SpreadsheetApp.getActiveSheet();
34
+ const B = 2;
35
+ const last_row = sheet.getRange(sheet.getMaxRows(), B)
36
+ .getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
37
+ if (last_row < 2) {
38
+ sheet.getRange(2, B).setValue('001-00001');
39
+ return ;
40
+ }
41
+ const v = sheet.getRange(2, B, last_row - 1, 1)
42
+ .getValues()
43
+ .sort((x,y) => x > y ? -1:(x < y ? 1 : 0))[0];
44
+ const ret = '001-'
45
+ + (+[...v].toString().replace(/^001-/, '') + 1).toString().padStart(5, '0');
46
+ sheet.getRange(last_row + 1, B).setValue(ret);
47
+ }
30
48
  ```