回答編集履歴

10

修正

2021/08/13 13:20

投稿

退会済みユーザー
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
 
15
- IMPORTRANGE関数の第1引数に指定した参照先のスプレッドシート内の特定シートのセルを参照させたい場合は、INDIRECT関数を使うのではなく、直接「参照先のシート名!セル番地」という文字列を指定した方が簡単でわかりやすいです。
15
+ IMPORTRANGEINDIRECT関数を組み合わせるよりも、直接「参照先のシート名!セル番地」という文字列を指定した方が簡単でわかりやすいです。
16
16
 
17
17
   
18
18
 
@@ -62,4 +62,4 @@
62
62
 
63
63
 
64
64
 
65
- したがって、sawaさん、質問者様がコメントされている通り、通常であればINDIRECT関数を使う必要はなく、単純な文字列連結を使用するだけで目的は達成できると思われます。
65
+ したがって、sawaさん、質問者様がコメントされている通り、通常であればIMPORTRANGEにINDIRECT関数を組み合わせる必要はなく、単純な文字列連結を使用するだけで目的は達成できると思われます。

9

修正

2021/08/13 13:20

投稿

退会済みユーザー
test CHANGED
@@ -56,6 +56,8 @@
56
56
 
57
57
  スプレッドシートBの シート5のC1セルの内容が表示されます。
58
58
 
59
+
60
+
59
61
  ---
60
62
 
61
63
 

8

修正

2021/08/13 13:17

投稿

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

7

2021/08/13 13:16

投稿

退会済みユーザー
test CHANGED
@@ -82,7 +82,7 @@
82
82
 
83
83
 
84
84
 
85
- しかし、同じように
85
+ しかし、
86
86
 
87
87
  =indirect("R"&5*A3+2&"C4",false)
88
88
 
@@ -99,3 +99,7 @@
99
99
 
100
100
 
101
101
  と解釈されるため、指定したスプレッドシート/シート名の、B4セルの値が表示されるはずです。
102
+
103
+
104
+
105
+ (今回エラーが起きた原因は、前者のパターンになっているからではないか、というのが私の推測です)

6

2021/08/08 05:46

投稿

退会済みユーザー
test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  ---
22
22
 
23
- 理由
23
+ 簡単な例での説明
24
24
 
25
25
  おさらいになりますが、
26
26
 
@@ -36,21 +36,21 @@
36
36
 
37
37
 
38
38
 
39
- たとえば、
39
+ たとえば、A1セルに、
40
40
 
41
- =indirect("R4C2", false) という数式をA1セルに入力するとします。
41
+ =indirect("R4C2", false) という数式を入力するとします。
42
42
 
43
43
 
44
44
 
45
- 仮に、参照先であるB4セル(R4C2番地)に「ABC」という文字が入っている場合、
45
+ 仮に、この数式の参照先であるR4C2番地(=B4セル)に「ABC」という文字が入っている場合、
46
46
 
47
- A1セルは「ABC」と表示されます。
47
+ 数式を入れたA1セルは「ABC」と表示されます。
48
48
 
49
49
 
50
50
 
51
- 一方、参照先であるB4セル(R4C2番地)に何も文字が入っていない場合は
51
+ 一方、参照先であるR4C2番地(=B4セル)に何も文字が入っていない場合は
52
52
 
53
- A1セルは空白になります。
53
+ 数式を入れたA1セルは空白になります。
54
54
 
55
55
 
56
56
 

5

2021/08/08 05:44

投稿

退会済みユーザー
test CHANGED
@@ -22,15 +22,41 @@
22
22
 
23
23
  (理由)
24
24
 
25
+ おさらいになりますが、
25
26
 
27
+ ```
26
28
 
27
29
  indirect(引数, false)
30
+
31
+ ```
28
32
 
29
33
  は、引数に指定された文字列がR1C1形式のセル番地であるとみなし、
30
34
 
31
35
  そのセル番地の**中身**を返します。
32
36
 
33
37
 
38
+
39
+ たとえば、
40
+
41
+ =indirect("R4C2", false) という数式をA1セルに入力するとします。
42
+
43
+
44
+
45
+ 仮に、参照先であるB4セル(R4C2番地)に「ABC」という文字が入っている場合、
46
+
47
+ A1セルは「ABC」と表示されます。
48
+
49
+
50
+
51
+ 一方、参照先であるB4セル(R4C2番地)に何も文字が入っていない場合は
52
+
53
+ A1セルは空白になります。
54
+
55
+
56
+
57
+ ---
58
+
59
+ (今回の例に適用)
34
60
 
35
61
  たとえば、同じシートのどこかのセルに
36
62
 

4

2021/08/08 05:38

投稿

退会済みユーザー
test CHANGED
@@ -26,9 +26,9 @@
26
26
 
27
27
  indirect(引数, false)
28
28
 
29
- は、引数に指定中身をR1C1形式の番地であるとみなした場合の
29
+ は、引数に指定され文字列がR1C1形式のセル番地であるとみなし、
30
30
 
31
- その番地の**中身**を返します。
31
+ そのセル番地の**中身**を返します。
32
32
 
33
33
 
34
34
 
@@ -48,7 +48,7 @@
48
48
 
49
49
 
50
50
 
51
- =importrange("スプレッドシートID","シート名!")
51
+ =importrange("スプレッドシートID","シート名!")  <==セル番地が空白。シート名だけ
52
52
 
53
53
 
54
54
 

3

2021/08/08 05:29

投稿

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

2

2021/08/08 05:27

投稿

退会済みユーザー
test CHANGED
@@ -1,6 +1,6 @@
1
1
  「=indirect("R"&5*A3+2&"C4",false)」
2
2
 
3
- という式(前後のカギかっこは除いてください)を適当なセルに入力したとき、どのように表示されますか?
3
+ という式(前後のカギかっこは除いてください)を今問題が起こっているシートと同じシートのどこか別のセルに入力したとき、どのように表示されますか?
4
4
 
5
5
   
6
6
 

1

2021/08/08 05:25

投稿

退会済みユーザー
test CHANGED
@@ -60,8 +60,8 @@
60
60
 
61
61
 
62
62
 
63
- =importrange("スプレッドシートID","シート名!A4")
63
+ =importrange("スプレッドシートID","シート名!B4")
64
64
 
65
65
 
66
66
 
67
- と解釈されるため、指定したスプレッドシート/シート名の、A4セルの値が表示されるはずです。
67
+ と解釈されるため、指定したスプレッドシート/シート名の、B4セルの値が表示されるはずです。