回答編集履歴
6
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
GASを使って、別のスプレッドシートにあらかじめ記録しておいた文字列を、任意のシートに数式としてコピーすることなら可能です。
|
19
19
|
|
20
20
|
【具体例】
|
21
|
-
・シートAの「A
|
21
|
+
・シートAの「A1」セルに、あらかじめコピーしたい数式文字列(先頭の「=」がない状態)が記録されているとします。
|
22
22
|

|
23
23
|
|
24
24
|
・これをシートBの「A144」セルに転記したいとする。
|
@@ -30,9 +30,9 @@
|
|
30
30
|
```js
|
31
31
|
function setFormula() {
|
32
32
|
const ss = SpreadsheetApp.openById('シートAのスプレッドシートID').getSheetByName('シートAの数式を記録しているシートのシート名');
|
33
|
-
const formula = ss.getRange(
|
33
|
+
const formula = ss.getRange(1,1).getValue(); // シートAのA1セルから数式(の文字列)を取得する。
|
34
34
|
const destss = SpreadsheetApp.openById('シートBのスプレッドシートID').getSheetByName('シートBのシート名');
|
35
|
-
destss.getRange(144,1).setFormula('=' + formula);
|
35
|
+
destss.getRange(144,1).setFormula('=' + formula); // シートBのA144セルに数式を設定する。
|
36
36
|
}
|
37
37
|
```
|
38
38
|
|
5
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
・間接参照を行う数式として、まずINDIRECT関数がありますが、これは引数に指定された値(または評価結果)がセルのアドレス番号(例:A5やB10)となっている場合にのみ動作し、あらゆる数式(を表す文字列)を解析する機能までは持っていません。
|
4
4
|
|
5
|
-
例
|
5
|
+
【具体例】
|
6
6
|
A1セルに「C」、B1セルに「10」という値が入っている状態で
|
7
7
|
D5セルに「=INDIRECT(A1&B1)」と入力
|
8
8
|
→ D5セルの計算結果は、C10セルの内容になる。
|
@@ -10,14 +10,14 @@
|
|
10
10
|
一方「 =INDIRECT("=A1+B1")」 という書き方 をした場合、エラーになる。(INDIRECT関数は、「=A1+B1」という数式を解析できない)
|
11
11
|
|
12
12
|
|
13
|
-
|
13
|
+
・IMPORTRANGEも同様です。
|
14
14
|
|
15
15
|
----
|
16
16
|
◆GASを利用するやり方について:
|
17
17
|
|
18
18
|
GASを使って、別のスプレッドシートにあらかじめ記録しておいた文字列を、任意のシートに数式としてコピーすることなら可能です。
|
19
19
|
|
20
|
-
|
20
|
+
【具体例】
|
21
21
|
・シートAの「A2」セルに、あらかじめコピーしたい数式文字列(先頭の「=」がない状態)が記録されているとします。
|
22
22
|

|
23
23
|
|
4
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
結論:不可能です。
|
1
|
+
◆結論:不可能です。
|
2
2
|
|
3
3
|
・間接参照を行う数式として、まずINDIRECT関数がありますが、これは引数に指定された値(または評価結果)がセルのアドレス番号(例:A5やB10)となっている場合にのみ動作し、あらゆる数式(を表す文字列)を解析する機能までは持っていません。
|
4
4
|
|
@@ -10,18 +10,22 @@
|
|
10
10
|
一方「 =INDIRECT("=A1+B1")」 という書き方 をした場合、エラーになる。(INDIRECT関数は、「=A1+B1」という数式を解析できない)
|
11
11
|
|
12
12
|
|
13
|
-
IMPORTRANGEも同様です。
|
13
|
+
◆IMPORTRANGEも同様です。
|
14
14
|
|
15
15
|
----
|
16
|
-
GASを利用するやり方について:
|
16
|
+
◆GASを利用するやり方について:
|
17
17
|
|
18
18
|
GASを使って、別のスプレッドシートにあらかじめ記録しておいた文字列を、任意のシートに数式としてコピーすることなら可能です。
|
19
19
|
|
20
|
-
具体例:
|
20
|
+
◆具体例:
|
21
21
|
・シートAの「A2」セルに、あらかじめコピーしたい数式文字列(先頭の「=」がない状態)が記録されているとします。
|
22
22
|

|
23
23
|
|
24
|
+
・これをシートBの「A144」セルに転記したいとする。
|
25
|
+
|
26
|
+
|
24
|
-
|
27
|
+
この場合、下記のようなコードを、シートBのスクリプトに設定して実行します。
|
28
|
+
|
25
29
|
|
26
30
|
```js
|
27
31
|
function setFormula() {
|
@@ -32,7 +36,7 @@
|
|
32
36
|
}
|
33
37
|
```
|
34
38
|
|
35
|
-
この例示コードの場合、固定文字列をコピーしているので、通常の数式のように、コピー先の行に合わせて、数式内のセル番地をずらすことまでは出来ていません。
|
39
|
+
・この例示コードの場合、固定文字列をコピーしているので、通常の数式のように、コピー先の行に合わせて、数式内のセル番地をずらすことまでは出来ていません。
|
36
40
|
(やろうと思えばできる可能性はありますが、実装のための要件[=シートBの数式を、シートAのどの位置にコピーし、どう番地をずらさなければならないのかについての情報] が全く示されていないため、現時点では判断できません)
|
37
41
|
|
38
42
|
・複数の関数をコピーしたい場合は、その処理を追加するだけです。
|
3
test
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
結論:不可能です。
|
2
2
|
|
3
3
|
・間接参照を行う数式として、まずINDIRECT関数がありますが、これは引数に指定された値(または評価結果)がセルのアドレス番号(例:A5やB10)となっている場合にのみ動作し、あらゆる数式(を表す文字列)を解析する機能までは持っていません。
|
4
|
+
|
5
|
+
例)
|
6
|
+
A1セルに「C」、B1セルに「10」という値が入っている状態で
|
7
|
+
D5セルに「=INDIRECT(A1&B1)」と入力
|
8
|
+
→ D5セルの計算結果は、C10セルの内容になる。
|
9
|
+
|
10
|
+
一方「 =INDIRECT("=A1+B1")」 という書き方 をした場合、エラーになる。(INDIRECT関数は、「=A1+B1」という数式を解析できない)
|
11
|
+
|
12
|
+
|
4
13
|
IMPORTRANGEも同様です。
|
5
14
|
|
6
15
|
----
|
2
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
結論:不可能です。
|
2
2
|
|
3
|
-
・間接参照を行う数式として、まずINDIRECT関数がありますが、これは
|
3
|
+
・間接参照を行う数式として、まずINDIRECT関数がありますが、これは引数に指定された値(または評価結果)がセルのアドレス番号(例:A5やB10)となっている場合にのみ動作し、あらゆる数式(を表す文字列)を解析する機能までは持っていません。
|
4
4
|
IMPORTRANGEも同様です。
|
5
5
|
|
6
6
|
----
|
1
test
CHANGED
@@ -16,10 +16,10 @@
|
|
16
16
|
|
17
17
|
```js
|
18
18
|
function setFormula() {
|
19
|
-
const ss = SpreadsheetApp.
|
19
|
+
const ss = SpreadsheetApp.openById('シートAのスプレッドシートID').getSheetByName('シートAの数式を記録しているシートのシート名');
|
20
20
|
const formula = ss.getRange(2,1).getValue(); // シートAのA2セルから数式(の文字列)を取得する。
|
21
|
-
const destss = SpreadsheetApp.
|
21
|
+
const destss = SpreadsheetApp.openById('シートBのスプレッドシートID').getSheetByName('シートBのシート名');
|
22
|
-
destss.getRange(144,1).
|
22
|
+
destss.getRange(144,1).setFormula('=' + formula);
|
23
23
|
}
|
24
24
|
```
|
25
25
|
|