質問編集履歴
9
文章
title
CHANGED
File without changes
|
body
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
質問を改めます。
|
18
18
|
|
19
|
-
元データがありピボットデーブルを作成したのち、テーブルの一つのセルをダブルクリックすれば元データの該当部分が展開されますが、テーブルの複数セルを選択して同時に展開するものを作りたいです。上記コードは途上のものですが、まずは、アクティブで複数選択したセルのテーブルの行と列の内容を取得することを考えています。(今はテーブルがc列と1行に枠として展開されています。)
|
19
|
+
元データがありピボットデーブルを作成したのち、テーブルの一つのセルをダブルクリックすれば元データの該当部分が展開されますが、テーブルの複数セルを選択して同時に展開するものをシート9に作りたいです。上記コードは途上のものですが、まずは、アクティブで複数選択したセルのテーブルの行と列の内容を取得することを考えています。(今はテーブルがc列と1行に枠として展開されています。)
|
20
20
|
|
21
21
|
sheet.getRange(i+1, 1).setFormula(`=indirect(address(rangeList[i].getRow()-1+1,3))`);
|
22
22
|
sheet.getRange(i+1, 2).setValue(`=indirect(address(1,rangeList[i].getColumn()-1))`);
|
8
コードのアップデート
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,21 +2,18 @@
|
|
2
2
|
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
|
3
3
|
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート9');
|
4
4
|
var rangeList = sheet.getActiveRangeList().getRanges();
|
5
|
-
|
6
5
|
for(var i = 0; i < rangeList.length ; i++){
|
7
6
|
|
8
|
-
sheet.getRange(i+1, 1).setFormula(`=indirect(address(rangeList[i].getRow()-1+1,3))`);
|
9
|
-
sheet.getRange(i+1, 2).setValue(`=indirect(address(1,rangeList[i].getColumn()-1))`);
|
10
|
-
}
|
11
7
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
8
|
+
sheet.getRange(i+150, 1).setValue(`=
|
9
|
+
query('シート9'!A2:U,"where (D='"&indirect(address(${rangeList[i].getRow()-1+1},3))&"'or L='"&indirect(address(${rangeList[i].getRow()-1+1},3))&"')
|
10
|
+
and year(A)="&text(substitute(substitute(indirect(address(1,${rangeList[i].getColumn()-1})),"-",""),",","-"),"YYYY")&" and month(A)+1="&text(substitute(substitute(indirect(address(1,${rangeList[i].getColumn()-1})),"-",""),",","-"),"MM")&""))
|
11
|
+
)`);
|
16
12
|
|
17
|
-
}
|
13
|
+
}}
|
18
14
|
コード
|
19
15
|
```
|
16
|
+
|
20
17
|
質問を改めます。
|
21
18
|
|
22
19
|
元データがありピボットデーブルを作成したのち、テーブルの一つのセルをダブルクリックすれば元データの該当部分が展開されますが、テーブルの複数セルを選択して同時に展開するものを作りたいです。上記コードは途上のものですが、まずは、アクティブで複数選択したセルのテーブルの行と列の内容を取得することを考えています。(今はテーブルがc列と1行に枠として展開されています。)
|
7
内容
title
CHANGED
File without changes
|
body
CHANGED
@@ -23,7 +23,7 @@
|
|
23
23
|
|
24
24
|
sheet.getRange(i+1, 1).setFormula(`=indirect(address(rangeList[i].getRow()-1+1,3))`);
|
25
25
|
sheet.getRange(i+1, 2).setValue(`=indirect(address(1,rangeList[i].getColumn()-1))`);
|
26
|
-
の部分でiが回っていないのですが、これをiで読み取れるようにするにはどうすればよろしいでしょうか?
|
26
|
+
の部分でiが回っていないのですが、setformulaがA1形式のみ対応らしいのですが、これをiで読み取れるようにするにはどうすればよろしいでしょうか?
|
27
27
|
|
28
28
|
|
29
29
|
|
6
内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,41 +1,30 @@
|
|
1
1
|
```function myFunctionXY() {
|
2
|
-
|
3
2
|
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
|
4
3
|
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート9');
|
5
|
-
// アクティブな範囲の配列を取得
|
6
4
|
var rangeList = sheet.getActiveRangeList().getRanges();
|
7
5
|
|
8
|
-
// 取得したアクティブな範囲をループで回す
|
9
6
|
for(var i = 0; i < rangeList.length ; i++){
|
10
|
-
// 範囲の開始行
|
11
|
-
Logger.log(rangeList[i].getRow());
|
12
|
-
Logger.log(rangeList[i].getColumn());
|
13
|
-
var aa= sheet.getRange(i+1, 12).setValue(rangeList[i].getRow());
|
14
|
-
var bb= sheet.getRange(i+1, 13).setValue(rangeList[i].getColumn());
|
15
7
|
|
8
|
+
sheet.getRange(i+1, 1).setFormula(`=indirect(address(rangeList[i].getRow()-1+1,3))`);
|
16
|
-
sheet.getRange(i+1,
|
9
|
+
sheet.getRange(i+1, 2).setValue(`=indirect(address(1,rangeList[i].getColumn()-1))`);
|
17
|
-
|
18
10
|
}
|
19
11
|
|
20
12
|
SpreadsheetApp.flush()
|
21
|
-
var range = sheet.getRange('
|
13
|
+
var range = sheet.getRange('P:P');
|
22
|
-
var target = sheet.getRange('
|
14
|
+
var target = sheet.getRange('P:P');
|
23
15
|
range.copyTo(target, {contentsOnly:true});
|
24
16
|
|
25
17
|
}
|
26
18
|
コード
|
27
19
|
```
|
20
|
+
質問を改めます。
|
28
21
|
|
29
|
-
アクティブシートの複数セルを選択(+commandで)した上で、GASを回すと、
|
30
|
-
sheet2.getRange(i+1, 1).setValue(`=M${i+1} + L${i+1}`);
|
31
|
-
sheet2.getRange(i+2, 1).setValue(`=M${i+2} + L${i+2}`);}
|
32
|
-
が
|
22
|
+
元データがありピボットデーブルを作成したのち、テーブルの一つのセルをダブルクリックすれば元データの該当部分が展開されますが、テーブルの複数セルを選択して同時に展開するものを作りたいです。上記コードは途上のものですが、まずは、アクティブで複数選択したセルのテーブルの行と列の内容を取得することを考えています。(今はテーブルがc列と1行に枠として展開されています。)
|
33
23
|
|
34
|
-
二点ございます。
|
35
|
-
①現状以下の数式によってアクティブセルのrowとcolumnがT/BのLとM列に展開されていますが、これを表示しないでコード内で読み取って、setvalueを発動するにはどうする必要がありますか?
|
36
|
-
|
24
|
+
sheet.getRange(i+1, 1).setFormula(`=indirect(address(rangeList[i].getRow()-1+1,3))`);
|
37
|
-
|
25
|
+
sheet.getRange(i+1, 2).setValue(`=indirect(address(1,rangeList[i].getColumn()-1))`);
|
26
|
+
の部分でiが回っていないのですが、これをiで読み取れるようにするにはどうすればよろしいでしょうか?
|
38
27
|
|
39
|
-
②setValue(`=M${i+1} + L${i+1}`)の部分は実際はQUERY関数を使おうと思っていますので、iごとに複数行展開されるため、展開が終わったら一行開けて次のi+1を展開したいのですが、その場合のコードをお教えいただけますでしょうか?
|
40
28
|
|
29
|
+
|
41
30
|
どうぞよろしくお願いいたします。
|
5
内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -36,6 +36,6 @@
|
|
36
36
|
var aa= sheet.getRange(i+1, 12).setValue(rangeList[i].getRow());
|
37
37
|
var bb= sheet.getRange(i+1, 13).setValue(rangeList[i].getColumn());
|
38
38
|
|
39
|
-
②setValue(`=M${i+1} + L${i+1}`)の部分は実際はQUERY関数を使おうと思っています
|
39
|
+
②setValue(`=M${i+1} + L${i+1}`)の部分は実際はQUERY関数を使おうと思っていますので、iごとに複数行展開されるため、展開が終わったら一行開けて次のi+1を展開したいのですが、その場合のコードをお教えいただけますでしょうか?
|
40
40
|
|
41
41
|
どうぞよろしくお願いいたします。
|
4
コード
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,27 +1,41 @@
|
|
1
1
|
```function myFunctionXY() {
|
2
2
|
|
3
|
-
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
|
3
|
+
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
|
4
|
+
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート9');
|
5
|
+
// アクティブな範囲の配列を取得
|
6
|
+
var rangeList = sheet.getActiveRangeList().getRanges();
|
4
7
|
|
5
|
-
// 取得したアクティブな範囲をループで回す
|
8
|
+
// 取得したアクティブな範囲をループで回す
|
9
|
+
for(var i = 0; i < rangeList.length ; i++){
|
10
|
+
// 範囲の開始行
|
11
|
+
Logger.log(rangeList[i].getRow());
|
12
|
+
Logger.log(rangeList[i].getColumn());
|
13
|
+
var aa= sheet.getRange(i+1, 12).setValue(rangeList[i].getRow());
|
14
|
+
var bb= sheet.getRange(i+1, 13).setValue(rangeList[i].getColumn());
|
6
15
|
|
7
|
-
|
16
|
+
sheet.getRange(i+1, 10).setValue(`=M${i+1} + L${i+1}`);
|
8
17
|
|
9
|
-
|
18
|
+
}
|
10
19
|
|
20
|
+
SpreadsheetApp.flush()
|
21
|
+
var range = sheet.getRange('A:A');
|
22
|
+
var target = sheet.getRange('A:A');
|
23
|
+
range.copyTo(target, {contentsOnly:true});
|
24
|
+
|
11
25
|
}
|
12
26
|
コード
|
13
27
|
```
|
14
28
|
|
15
|
-
アクティブシートの複数セルを選択した上で、GASを回すと、
|
29
|
+
アクティブシートの複数セルを選択(+commandで)した上で、GASを回すと、
|
16
30
|
sheet2.getRange(i+1, 1).setValue(`=M${i+1} + L${i+1}`);
|
17
31
|
sheet2.getRange(i+2, 1).setValue(`=M${i+2} + L${i+2}`);}
|
18
32
|
が複数セル分、計算されてシート9のA列目に展開されていくものを作りたいです。
|
19
33
|
|
20
34
|
二点ございます。
|
21
|
-
①現状以下の数式によってアクティブセルのrowとcolumnがT/BのLとM列に展開されていますが、これを表示しないでコード内で読み取って、setvalueを発動するにはどうす
|
35
|
+
①現状以下の数式によってアクティブセルのrowとcolumnがT/BのLとM列に展開されていますが、これを表示しないでコード内で読み取って、setvalueを発動するにはどうする必要がありますか?
|
22
36
|
var aa= sheet.getRange(i+1, 12).setValue(rangeList[i].getRow());
|
23
37
|
var bb= sheet.getRange(i+1, 13).setValue(rangeList[i].getColumn());
|
24
38
|
|
25
|
-
②実際はQUERY関数を使おうと思っていますが、例えば上記のように一回のiごとに複数行展開されるため、展開が終わったら一行開けて次のi+1を展開したいのですが、その場合のコードをお教えいただけますでしょうか?
|
39
|
+
②setValue(`=M${i+1} + L${i+1}`)の部分は実際はQUERY関数を使おうと思っていますが、例えば上記のように一回のiごとに複数行展開されるため、展開が終わったら一行開けて次のi+1を展開したいのですが、その場合のコードをお教えいただけますでしょうか?
|
26
40
|
|
27
41
|
どうぞよろしくお願いいたします。
|
3
タイトル
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
複数アクティブセルに
|
1
|
+
複数アクティブセル指定した時に、これらのセルの値を取得して数式に代入して展開する方法について
|
body
CHANGED
File without changes
|
2
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,27 +1,16 @@
|
|
1
1
|
```function myFunctionXY() {
|
2
2
|
|
3
|
-
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
|
4
|
-
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート9');
|
5
|
-
// アクティブな範囲の配列を取得
|
6
|
-
var rangeList = sheet.getActiveRangeList().getRanges();
|
3
|
+
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート9'); // アクティブな範囲の配列を取得 var rangeList = sheet.getActiveRangeList().getRanges();
|
7
4
|
|
8
|
-
// 取得したアクティブな範囲をループで回す
|
9
|
-
for(var i = 0; i < rangeList.length ; i++){
|
10
|
-
// 範囲の開始行
|
11
|
-
Logger.log(rangeList[i].getRow());
|
12
|
-
Logger.log(rangeList[i].getColumn());
|
13
|
-
var aa= sheet.getRange(i+1, 12).setValue(rangeList[i].getRow());
|
14
|
-
var bb= sheet.getRange(i+1, 13).setValue(rangeList[i].getColumn());
|
5
|
+
// 取得したアクティブな範囲をループで回す for(var i = 0; i < rangeList.length ; i++){ // 範囲の開始行 Logger.log(rangeList[i].getRow()); Logger.log(rangeList[i].getColumn()); var aa= sheet.getRange(i+1, 12).setValue(rangeList[i].getRow()); var bb= sheet.getRange(i+1, 13).setValue(rangeList[i].getColumn());
|
15
6
|
|
16
|
-
sheet2.getRange(i+1, 1).setValue(`=M${i+1} + L${i+1}`);
|
17
|
-
sheet2.getRange(i+2, 1).setValue(
|
7
|
+
sheet2.getRange(i+1, 1).setValue(=M${i+1} + L${i+1}); sheet2.getRange(i+2, 1).setValue(=M${i+2} + L${i+2});}
|
18
8
|
|
19
|
-
SpreadsheetApp.flush()
|
20
|
-
var range = sheet2.getRange('A:A');
|
21
|
-
var target = sheet2.getRange('A:A');
|
9
|
+
SpreadsheetApp.flush() var range = sheet2.getRange('A:A'); var target = sheet2.getRange('A:A'); range.copyTo(target, {contentsOnly:true});
|
22
|
-
range.copyTo(target, {contentsOnly:true});
|
23
10
|
|
11
|
+
}
|
12
|
+
コード
|
24
|
-
|
13
|
+
```
|
25
14
|
|
26
15
|
アクティブシートの複数セルを選択した上で、GASを回すと、
|
27
16
|
sheet2.getRange(i+1, 1).setValue(`=M${i+1} + L${i+1}`);
|
1
内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,18 +2,19 @@
|
|
2
2
|
|
3
3
|
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
|
4
4
|
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート9');
|
5
|
-
|
5
|
+
// アクティブな範囲の配列を取得
|
6
6
|
var rangeList = sheet.getActiveRangeList().getRanges();
|
7
7
|
|
8
|
-
|
8
|
+
// 取得したアクティブな範囲をループで回す
|
9
9
|
for(var i = 0; i < rangeList.length ; i++){
|
10
|
-
|
10
|
+
// 範囲の開始行
|
11
11
|
Logger.log(rangeList[i].getRow());
|
12
12
|
Logger.log(rangeList[i].getColumn());
|
13
13
|
var aa= sheet.getRange(i+1, 12).setValue(rangeList[i].getRow());
|
14
14
|
var bb= sheet.getRange(i+1, 13).setValue(rangeList[i].getColumn());
|
15
15
|
|
16
|
-
sheet2.getRange(i+1, 1).setValue(`=M${i+1} + L${i+1}`);
|
16
|
+
sheet2.getRange(i+1, 1).setValue(`=M${i+1} + L${i+1}`);
|
17
|
+
sheet2.getRange(i+2, 1).setValue(`=M${i+2} + L${i+2}`);}
|
17
18
|
|
18
19
|
SpreadsheetApp.flush()
|
19
20
|
var range = sheet2.getRange('A:A');
|
@@ -22,9 +23,9 @@
|
|
22
23
|
|
23
24
|
}```
|
24
25
|
|
25
|
-
|
26
26
|
アクティブシートの複数セルを選択した上で、GASを回すと、
|
27
|
-
setValue(`=M${i+1} + L${i+1}`);
|
27
|
+
sheet2.getRange(i+1, 1).setValue(`=M${i+1} + L${i+1}`);
|
28
|
+
sheet2.getRange(i+2, 1).setValue(`=M${i+2} + L${i+2}`);}
|
28
29
|
が複数セル分、計算されてシート9のA列目に展開されていくものを作りたいです。
|
29
30
|
|
30
31
|
二点ございます。
|
@@ -32,6 +33,6 @@
|
|
32
33
|
var aa= sheet.getRange(i+1, 12).setValue(rangeList[i].getRow());
|
33
34
|
var bb= sheet.getRange(i+1, 13).setValue(rangeList[i].getColumn());
|
34
35
|
|
35
|
-
②実際はQUERY関数を使おうと思ってい
|
36
|
+
②実際はQUERY関数を使おうと思っていますが、例えば上記のように一回のiごとに複数行展開されるため、展開が終わったら一行開けて次のi+1を展開したいのですが、その場合のコードをお教えいただけますでしょうか?
|
36
37
|
|
37
38
|
どうぞよろしくお願いいたします。
|