回答編集履歴

6

 

2022/05/01 07:42

投稿

退会済みユーザー
test CHANGED
@@ -18,7 +18,7 @@
18
18
  GASを使って、別のスプレッドシートにあらかじめ記録しておいた文字列を、任意のシートに数式としてコピーすることなら可能です。
19
19
 
20
20
  【具体例】
21
- ・シートAの「A2」セルに、あらかじめコピーしたい数式文字列(先頭の「=」がない状態)が記録されているとします。
21
+ ・シートAの「A1」セルに、あらかじめコピーしたい数式文字列(先頭の「=」がない状態)が記録されているとします。
22
22
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-01/dc6ece68-80df-4740-bc86-60b7aa320319.png)
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(2,1).getValue(); // シートAのA2セルから数式(の文字列)を取得する。
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

 

2022/05/01 07:40

投稿

退会済みユーザー
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
- IMPORTRANGEも同様です。
13
+ IMPORTRANGEも同様です。
14
14
 
15
15
  ----
16
16
  ◆GASを利用するやり方について:
17
17
 
18
18
  GASを使って、別のスプレッドシートにあらかじめ記録しておいた文字列を、任意のシートに数式としてコピーすることなら可能です。
19
19
 
20
- 具体例
20
+ 具体例
21
21
  ・シートAの「A2」セルに、あらかじめコピーしたい数式文字列(先頭の「=」がない状態)が記録されているとします。
22
22
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-01/dc6ece68-80df-4740-bc86-60b7aa320319.png)
23
23
   

4

 

2022/05/01 07:39

投稿

退会済みユーザー
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
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-01/dc6ece68-80df-4740-bc86-60b7aa320319.png)
23
23
   
24
+ ・これをシートBの「A144」セルに転記したいとする。
25
+  
26
+
24
- れをシートB「A144」セルに転記したい場合、下記のようなコードを、シートBのスクリプトに設定して実行します。
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

 

2022/05/01 07:37

投稿

退会済みユーザー
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

 

2022/05/01 07:22

投稿

退会済みユーザー
test CHANGED
@@ -1,6 +1,6 @@
1
1
  結論:不可能です。
2
2
 
3
- ・間接参照を行う数式として、まずINDIRECT関数がありますが、これは参照先セルの値がセルのアドレス番号(例:A5やB10)となっている場合にのみ有効であり、あらゆる数式(を表す文字列)を解析する機能までは持っていません。
3
+ ・間接参照を行う数式として、まずINDIRECT関数がありますが、これは引数に指定された(または評価結果)がセルのアドレス番号(例:A5やB10)となっている場合にのみ動作し、あらゆる数式(を表す文字列)を解析する機能までは持っていません。
4
4
  IMPORTRANGEも同様です。
5
5
 
6
6
  ----

1

 

2022/05/01 07:20

投稿

退会済みユーザー
test CHANGED
@@ -16,10 +16,10 @@
16
16
   
17
17
  ```js
18
18
  function setFormula() {
19
- const ss = SpreadsheetApp.gopenById('シートAのスプレッドシートID').getSheetByName('シートAの数式を記録しているシートのシート名')
19
+ const ss = SpreadsheetApp.openById('シートAのスプレッドシートID').getSheetByName('シートAの数式を記録しているシートのシート名');
20
20
  const formula = ss.getRange(2,1).getValue(); // シートAのA2セルから数式(の文字列)を取得する。
21
- const destss = SpreadsheetApp.gopenById('シートBのスプレッドシートID').getSheetByName('シートBのシート名')
21
+ const destss = SpreadsheetApp.openById('シートBのスプレッドシートID').getSheetByName('シートBのシート名');
22
- destss.getRange(144,1).getColumn()).setFormula('=' + formula);
22
+ destss.getRange(144,1).setFormula('=' + formula);
23
23
  }
24
24
  ```
25
25