[[20221128134848]] 『#REF! エラーをなくしたい』(たけぼん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『#REF! エラーをなくしたい』(たけぼん)

 いつも勉強させていただいてます。

 以下について教えてください。

 元.xlsx というブックの B3 セルに以下の数式が入力されています。

 ='\\server\folder1\[参照.xlsx]入力'!C5

 この数式であれば 参照.xlsx の 入力シート の C5 セルが正しく表示されます。

 この C5 の 5 は条件によって変化するのですが、元.xlsx の A1 セルに この変化する値が入力されるようになっているため、
 INDIRECT関数を使って参照すればいいと考え、B3 セルの数式を以下にしてみました。

 =INDIRECT("'\\server\folder1\[参照.xlsx]入力'!"&"C"&A1)

 すると #REF! エラーとなります。
 エラーとならないようにするには、どのように記述すればよいでしょうか?

 なお、元.xlsx の B1 セルにも変化する値が入力されているため、最終的には

 参照.xlsx の 入力シート の C列・元.xlsx の A1 セルの数値行 〜 参照.xlsx の E列・元.xlsx の B1 セルの数値行

 を参照する数式にしたいです。

 以上、よろしくお願いいたします。

< 使用 Excel:Office365、使用 OS:unknown >


 マイクロソフトのINDIRECT関数の解説ページ

https://support.microsoft.com/ja-jp/office/indirect-%E9%96%A2%E6%95%B0-474b3a3a-8a26-4f44-b491-92b6306fa261

 >参照文字列で他のブックを参照している場合 (外部参照)、そのブックを開いておく必要があります。
 >参照先のブックを開いていない場合、エラー値 #REF! が返されます。

(ねむねむ) 2022/11/28(月) 14:06:03


 =INDEX('\\server\folder1\[参照.xlsx]入力'!C:C,A1)
では?
(トォーリス・ガリ) 2022/11/28(月) 14:11:56

 ねむねむさん

 ご回答有難うございます。
 INDIRECT関数の仕様、知りませんでした。 
 確かに 参照.xlsx を開けば #REF! エラーは出ませんでした。

 そうであれば、それを承知で、INDIRECT を使わないで上記のように 元.xlsx の A1 セル を参照する、うまい方法はないでしょうか?

 虫がいいようですが、改めましてよろしくお願いいたします。

 トォーリス・ガリもご回答有難うございました。

(たけぼん) 2022/11/28(月) 14:36:16


 トォーリス・ガリさんの回答ではできなかったんでしょうか?
(コナミ) 2022/11/28(月) 14:47:05

 トォーリス・ガリさんの回答ではできませんでした。
 上記のようにINDIRECTを使う場合は、ブックを開いておく必要があるようです。

 ということで、INDIRECT関数を使わない方法をお尋ねしている次第です。

(たけぼん) 2022/11/28(月) 14:53:54


 トォーリス・ガリさんの回答はINDEX関数ですけど?
(コナミ) 2022/11/28(月) 14:57:03

 まちがえました。投稿してから気づきました。
 INDIRECT ではなくINDEX ですね。
 申し訳ございません。

 今から試してみます。

(たけぼん) 2022/11/28(月) 14:58:56


 トォーリス・ガリさんに教えていただいた
 =INDEX('\\server\folder1\[参照.xlsx]入力'!C:C,A1)
 はうまく表示されました。有難うございます。
 トォーリス・ガリさん・コナミさん、申し訳ありません。

 質問にも書きましたが、最終的には
 参照.xlsx の 入力シート の C列・元.xlsx の A1 セルの数値行 〜 参照.xlsx の E列・元.xlsx の B1 セルの数値行

 を参照する数式にしたいのですが、教えていただいた関数をアレンジして実現させることは可能でしょうか?
 どのようにすればよいでしょうか?

 よろしくお願いいたします。

(たけぼん) 2022/11/28(月) 15:09:52


未検証ですが
 =INDEX('\\server\folder1\[参照.xlsx]入力'!C:C,SEQUENCE(B1-A1+1,,A1))

では?
(トォーリス・ガリ) 2022/11/28(月) 16:44:00


 トォーリス・ガリさん

 ご教示有難うございます。

 =INDEX('\\server\folder1\[参照.xlsx]入力'!C:C,SEQUENCE(B1-A1+1,,A1))

 を試してみました。

 いい感じにスピルして表示されたのですが、表示されたのはC列のみで、希望の D列〜E列 が表示されていません。

 しつこいようで申し訳ありませんが、C列〜E列 全て表示されるようにするにはどうすればよいでしょうか?
よろしくお願いいたします。

(たけぼん) 2022/11/28(月) 17:06:41


C列をD列に変えればよくないですか?
またはINDEX関数で列がを配列で指定すればスピルするとおもいます
あとはご自分でどうぞ
(トォーリス・ガリ) 2022/11/28(月) 17:44:41

 簡略化して同一シートで言いますけど
 ↓ な感じでできませんか?

 =INDEX(C:E,SEQUENCE(B1-A1+1,1,A1),{1,2,3})

 以上、参考まで
(笑) 2022/11/28(月) 21:37:17

 トォーリス・ガリさん、笑さん

 ご連絡が遅くなり、申し訳ございません。

 =INDEX(C:E,SEQUENCE(B1-A1+1,1,A1),{1,2,3})

 試してみました。
 バッチリです。有難うございました。

 基本的な部分がよく理解できていないので、折角ヒントを出していただいてもアレンジができないのがお恥ずかしいです。特に配列数式は鬼門です。

 教えていただいた数式は、色んな局面で使えそうです。改めて有難うございました。

(たけぼん) 2022/11/29(火) 09:27:32


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.