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

回答編集履歴

10

修正

2021/08/13 13:20

投稿

退会済みユーザー
answer CHANGED
@@ -5,7 +5,7 @@
5
5
  (IMPORTRANGEの第1引数に指定したスプレッドシート内のシート名ではありません)
6
6
 
7
7
 
8
- IMPORTRANGE関数の第1引数に指定した参照先のスプレッドシート内の特定シートのセル参照させたい場INDIRECT関数を使うのではなく、直接「参照先のシート名!セル番地」という文字列を指定した方が簡単でわかりやすいです。
8
+ IMPORTRANGEとINDIRECT関数を組みわせるよりも、直接「参照先のシート名!セル番地」という文字列を指定した方が簡単でわかりやすいです。
9
9
   
10
10
  【例】
11
11
  スプレッドシート「A」と「B」があり、下記数式を「スプレッドシートA」に入力するとする。
@@ -30,4 +30,4 @@
30
30
 
31
31
  ---
32
32
 
33
- したがって、sawaさん、質問者様がコメントされている通り、通常であればINDIRECT関数を使う必要はなく、単純な文字列連結を使用するだけで目的は達成できると思われます。
33
+ したがって、sawaさん、質問者様がコメントされている通り、通常であればIMPORTRANGEにINDIRECT関数を組み合わせる必要はなく、単純な文字列連結を使用するだけで目的は達成できると思われます。

9

修正

2021/08/13 13:20

投稿

退会済みユーザー
answer CHANGED
@@ -27,6 +27,7 @@
27
27
   
28
28
   一方、たとえば「スプレッドシートA」の シート3 の R4C2セルに「シート5!C1」と入力されていれば、
29
29
  スプレッドシートBの シート5のC1セルの内容が表示されます。
30
+
30
31
  ---
31
32
 
32
33
  したがって、sawaさん、質問者様がコメントされている通り、通常であればINDIRECT関数を使う必要はなく、単純な文字列連結を使用するだけで目的は達成できると思われます。

8

修正

2021/08/13 13:17

投稿

退会済みユーザー
answer CHANGED
@@ -1,53 +1,32 @@
1
- 「=indirect("R"&5*A3+2&"C4",false)」
1
+ ----
2
- という式(前後のカギかっこは除いてくだい)
2
+ 【sawaんのコメント受けて修正】
3
+ IMPORTRANGEの第2引数にINDIRECT関数を使った場合で、そのINDIRECT関数内にシート名を指定してセル番地を指定した場合、
4
+ INDIRECT関数内のシート名は、「**その数式を入力しているスプレッドシート**内のシート名」を指します。
3
- 今問題が起こっているシートと同じシートのどこか別のセルに入力したとき、
5
+ (IMPORTRANGEの第1引数に指定したスプレッドシート内のシート名ではありません)
6
+
7
+
4
- よう表示れます
8
+ IMPORTRANGE関数第1引数指定した参照先のスプレッドシート内の特定シートのセルを参照せたい場合は、INDIRECT関数を使うのではなく、直接「参照先のシート名!セル番地」という文字列を指定した方が簡単でわりやすいです。
5
9
   
6
- もし、{表示が空白になる}、もしくは{「B4」「R4C2」のようなセル番地形式の文字列ではない}
7
- のいずれかである場合、
8
- 「=importrange("スプレッドシートID","シート名!"&indirect("R"&5*A3+2&"C4",false))」という式を入力しても
9
- 質問に記載されているのと同じエラーが表示されると思います。
10
-
11
- ---
10
+ 【例】
12
- (簡単な例での説明)
11
+ スプレッドシート「A」と「B」があり、下記数式を「スプレッドシートA」に入力するとする。
13
- おさらいにりますが、
12
+ 1.INDIRECTを使わいパターン:
14
13
  ```
15
- indirect(引数, false)
14
+ =IMPORTRANGE("スプレッドシートBのID","シート3!"&"R4C2")
16
15
  ```
16
+ ---> この場合、「スプレッドシート**B**」の シート3 のR4C2セルの内容が表示されます。
17
+  
18
+  
19
+ 2.INDIRECTを使用する場合:
20
+ ```
21
+ =IMPORTRANGE("スプレッドシートBのID",INDIRECT("シート3!"&"R4C2", FALSE))
22
+ ```
23
+ --->これは、まず「(Bではなく)スプレッドシート**A**」の シート3 のR4C2 セルに書かれてある内容がセル番地として解釈され、それがセル番地として解釈可能な形式であれば
17
- 引数に指定された文字列がR1C1形式のセル番地であるとみなし、
24
+ スプレッドシート**B**の解釈されたセル番地が参照されます。
18
- そのセル番地の**中身**を返します。
19
25
 
20
- たとえば、A1セルに、
21
- =indirect("R4C2", false)いう数式を入力とします。
26
+  たとえば「スプレッドシートA」の シート3 の R4C2セルに「B4」と入力されてい場合は、スプレッドシートBの 1番目のシートのB4セルの内容が表示されます。(この場合シート名が指定されていないため暗黙的に1番目のシートになります)
22
-
27
+  
23
- 仮に数式参照先であるR4C2番地(=B4セルに「ABC」という文字がている場合
28
+  一方たとえば「スプレッドシートA」 シート3 R4C2セルに「シート5!C1」と入力されていれば
24
- 数式を入れたA1セルは「ABC」と表示されます。
29
+ スプレッドシートBの シート5のC1セルの内容が表示されます。
25
-
26
- 一方、参照先であるR4C2番地(=B4セル)に何も文字が入っていない場合は
27
- 数式を入れたA1セルは空白になります。
28
-
29
30
  ---
30
- (今回の例に適用)
31
- たとえば、同じシートのどこかのセルに
32
- =indirect("R"&5*A3+2&"C4",false)
33
- という数式を入れたときに、その結果が仮に**空白**ならば、
34
31
 
35
- =importrange("スプレッドシートID","シート名!"&indirect("R"&5*A3+2&"C4",false))
36
-
37
-
38
-
39
- =importrange("スプレッドシートID","シート名!")  <==セル番地空白。シーだけ
32
+ したって、sawaさん、質問者様がコメンされている通り、通常であればINDIRECT関数を使う必要はなく、単純な文字列連結を使用するだけで目的は達成できると思われます。
40
-
41
- と解釈されるため、「インポートした範囲の範囲またはシートが見つかりません。」というエラーになります。
42
-
43
- しかし、
44
- =indirect("R"&5*A3+2&"C4",false)
45
- という数式を入れたときに、その計算結果が仮に**「B4」や「R4C2」のような番地を表す文字列**になっているならば、
46
-
47
- =importrange("スプレッドシートID","シート名!"&indirect("R"&5*A3+2&"C4",false))
48
-
49
- =importrange("スプレッドシートID","シート名!B4")
50
-
51
- と解釈されるため、指定したスプレッドシート/シート名の、B4セルの値が表示されるはずです。
52
-
53
- (今回エラーが起きた原因は、前者のパターンになっているからではないか、というのが私の推測です)

7

2021/08/13 13:16

投稿

退会済みユーザー
answer CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
  と解釈されるため、「インポートした範囲の範囲またはシートが見つかりません。」というエラーになります。
42
42
 
43
- しかし、同じように
43
+ しかし、
44
44
  =indirect("R"&5*A3+2&"C4",false)
45
45
  という数式を入れたときに、その計算結果が仮に**「B4」や「R4C2」のような番地を表す文字列**になっているならば、
46
46
 
@@ -48,4 +48,6 @@
48
48
 
49
49
  =importrange("スプレッドシートID","シート名!B4")
50
50
 
51
- と解釈されるため、指定したスプレッドシート/シート名の、B4セルの値が表示されるはずです。
51
+ と解釈されるため、指定したスプレッドシート/シート名の、B4セルの値が表示されるはずです。
52
+
53
+ (今回エラーが起きた原因は、前者のパターンになっているからではないか、というのが私の推測です)

6

2021/08/08 05:46

投稿

退会済みユーザー
answer CHANGED
@@ -9,7 +9,7 @@
9
9
  質問に記載されているのと同じエラーが表示されると思います。
10
10
 
11
11
  ---
12
- 理由
12
+ 簡単な例での説明
13
13
  おさらいになりますが、
14
14
  ```
15
15
  indirect(引数, false)
@@ -17,14 +17,14 @@
17
17
  は、引数に指定された文字列がR1C1形式のセル番地であるとみなし、
18
18
  そのセル番地の**中身**を返します。
19
19
 
20
- たとえば、
20
+ たとえば、A1セルに、
21
- =indirect("R4C2", false) という数式をA1セルに入力するとします。
21
+ =indirect("R4C2", false) という数式を入力するとします。
22
22
 
23
- 仮に、参照先であるB4セル(R4C2番地)に「ABC」という文字が入っている場合、
23
+ 仮に、この数式の参照先であるR4C2番地(=B4セル)に「ABC」という文字が入っている場合、
24
- A1セルは「ABC」と表示されます。
24
+ 数式を入れたA1セルは「ABC」と表示されます。
25
25
 
26
- 一方、参照先であるB4セル(R4C2番地)に何も文字が入っていない場合は
26
+ 一方、参照先であるR4C2番地(=B4セル)に何も文字が入っていない場合は
27
- A1セルは空白になります。
27
+ 数式を入れたA1セルは空白になります。
28
28
 
29
29
  ---
30
30
  (今回の例に適用)

5

2021/08/08 05:44

投稿

退会済みユーザー
answer CHANGED
@@ -10,11 +10,24 @@
10
10
 
11
11
  ---
12
12
  (理由)
13
-
13
+ おさらいになりますが、
14
+ ```
14
15
  indirect(引数, false)
16
+ ```
15
17
  は、引数に指定された文字列がR1C1形式のセル番地であるとみなし、
16
18
  そのセル番地の**中身**を返します。
17
19
 
20
+ たとえば、
21
+ =indirect("R4C2", false) という数式をA1セルに入力するとします。
22
+
23
+ 仮に、参照先であるB4セル(R4C2番地)に「ABC」という文字が入っている場合、
24
+ A1セルは「ABC」と表示されます。
25
+
26
+ 一方、参照先であるB4セル(R4C2番地)に何も文字が入っていない場合は
27
+ A1セルは空白になります。
28
+
29
+ ---
30
+ (今回の例に適用)
18
31
  たとえば、同じシートのどこかのセルに
19
32
  =indirect("R"&5*A3+2&"C4",false)
20
33
  という数式を入れたときに、その結果が仮に**空白**ならば、

4

2021/08/08 05:38

投稿

退会済みユーザー
answer CHANGED
@@ -12,8 +12,8 @@
12
12
  (理由)
13
13
 
14
14
  indirect(引数, false)
15
- は、引数に指定中身をR1C1形式の番地であるとみなした場合の
15
+ は、引数に指定され文字列がR1C1形式のセル番地であるとみなし、
16
- その番地の**中身**を返します。
16
+ そのセル番地の**中身**を返します。
17
17
 
18
18
  たとえば、同じシートのどこかのセルに
19
19
  =indirect("R"&5*A3+2&"C4",false)
@@ -23,7 +23,7 @@
23
23
 
24
24
 
25
25
 
26
- =importrange("スプレッドシートID","シート名!")
26
+ =importrange("スプレッドシートID","シート名!")  <==セル番地が空白。シート名だけ
27
27
 
28
28
  と解釈されるため、「インポートした範囲の範囲またはシートが見つかりません。」というエラーになります。
29
29
 

3

2021/08/08 05:29

投稿

退会済みユーザー
answer CHANGED
@@ -1,8 +1,12 @@
1
1
  「=indirect("R"&5*A3+2&"C4",false)」
2
+ という式(前後のカギかっこは除いてください)を、
2
- という式(前後のカギかっこは除いてください)を今問題が起こっているシートと同じシートのどこか別のセルに入力したとき、どのように表示されますか?
3
+ 今問題が起こっているシートと同じシートのどこか別のセルに入力したとき、
4
+ どのように表示されますか?
3
5
   
4
- もし、{表示が空白}、もしくは{「B4」「R4C2」のようなセル番地形式の文字列ではない} のいずれか場合、
6
+ もし、{表示が空白になる}、もしくは{「B4」「R4C2」のようなセル番地形式の文字列ではない}
7
+ のいずれかである場合、
8
+ 「=importrange("スプレッドシートID","シート名!"&indirect("R"&5*A3+2&"C4",false))」という式を入力しても
5
- 質問記載のエラーが表示されます。
9
+ 質問記載されていると同じエラーが表示されると思います。
6
10
 
7
11
  ---
8
12
  (理由)

2

2021/08/08 05:27

投稿

退会済みユーザー
answer CHANGED
@@ -1,5 +1,5 @@
1
1
  「=indirect("R"&5*A3+2&"C4",false)」
2
- という式(前後のカギかっこは除いてください)を適当なセルに入力したとき、どのように表示されますか?
2
+ という式(前後のカギかっこは除いてください)を今問題が起こっているシートと同じシートのどこか別のセルに入力したとき、どのように表示されますか?
3
3
   
4
4
  もし、{表示が空白}、もしくは{「B4」「R4C2」のようなセル番地形式の文字列ではない} のいずれか場合、
5
5
  質問記載のエラーが表示されます。

1

2021/08/08 05:25

投稿

退会済みユーザー
answer CHANGED
@@ -29,6 +29,6 @@
29
29
 
30
30
  =importrange("スプレッドシートID","シート名!"&indirect("R"&5*A3+2&"C4",false))
31
31
 
32
- =importrange("スプレッドシートID","シート名!A4")
32
+ =importrange("スプレッドシートID","シート名!B4")
33
33
 
34
- と解釈されるため、指定したスプレッドシート/シート名の、A4セルの値が表示されるはずです。
34
+ と解釈されるため、指定したスプレッドシート/シート名の、B4セルの値が表示されるはずです。