Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 8 : Excel 2016)
INDIRECT関数
投稿日時: 19/09/09 13:01:57
投稿者: chokobanana

関数の一部を参照するセルのアドレスを文字列で指定させたいのですが上手くできません。
 
ご指導よろしくお願いします。
 
こちら先日こちらでご指導いただきました関数を参考に修正させていただきました。
方法(シート)のD33にアルファベットのO(オー)が入力されております。
 
 
=IFERROR(LOOKUP(1,0/FIND(方法!$C$37:$C$41,データ!$O4)/LEN(方法!$C$37:$C$41),方法!$D$37:$D$41),"")
  ↓
=IFERROR(LOOKUP(1,0/FIND(方法!$C$37:$C$41,INDIRECT("データ!"&方法!$D$33&4)/LEN(方法!$C$37:$C$41),方法!$D$37:$D$41),"")

回答
投稿日時: 19/09/09 13:58:29
投稿者: んなっと

 ) を一つ追加すればいいと思います。
 
=IFERROR(LOOKUP(1,0/FIND(方法!$C$37:$C$41,INDIRECT("データ!"&方法!D33&4))/LEN(方法!$C$37:$C$41),方法!$D$37:$D$41),"")

投稿日時: 19/09/09 14:12:11
投稿者: chokobanana

>) を一つ追加すればいいと思います。
  
=IFERROR(LOOKUP(1,0/FIND(方法!$C$37:$C$41,INDIRECT("データ!"&方法!$D$33&4))/LEN(方法!$C$37:$C$41),方法!$D$37:$D$41),"")
 
こちらを下や右にコピーしてもINDIRECT("データ!"&方法!$D$33&4)は可変せず固定になってしまい答えが返ってきません。
 
=IFERROR(LOOKUP(1,0/FIND(方法!$C$37:$C$41,INDIRECT("データ!"&方法!$D$33&ROW($A4))/LEN(方法!$C$37:$C$41),方法!$D$37:$D$41),"")
 
 
と修正するとINDIRECT("データ!"&方法!$D$33&ROW($A4))の答えは返ってきましたが式全体の回答は返ってきません。
 
ご指導よろしくお願いいたします。
 
 
 
 
 

回答
投稿日時: 19/09/09 14:50:05
投稿者: んなっと

最初の質問文の式
=IFERROR(LOOKUP(1,0/FIND(方法!$C$37:$C$41,INDIRECT("データ!"&方法!$D$33&4)/LEN(方法!$C$37:$C$41),方法!$D$37:$D$41),"")
は、( )の対応が間違っていました。
数式内の初めかっこと終わりかっこが正しく対応していません。」のメッセージが出ましたよね?
それを修正したのが、私の回答の式の
=IFERROR(LOOKUP(1,0/FIND(方法!$C$37:$C$41,INDIRECT("データ!"&方法!D33&4))/LEN(方法!$C$37:$C$41),方法!$D$37:$D$41),"")
です。それ以外のことなど一切関知しません。
 

引用:
こちらを下や右にコピーしても
可変せず固定になってしまい答えが返ってきません。
答えは返ってきましたが式全体の回答は返ってきません。

意味不明です。
誰が読んでもわかるように具体的に質問しましょう。

投稿日時: 19/09/09 15:22:35
投稿者: chokobanana

>) を一つ追加すればいいと思います。
 
転記ミスでExcelではカッコ綴じが在りましたのでメッセージは出ておりません。
 
)綴じを追加したエラーの出ない式を張り付けたセルを右や下にコピーするとセルの固定していない
参照先(行や列等)が下記のように可変すると思います。
 
O4を下にコピー→O5
O4を右にコピー→P4
 
下の式ではINDIRECT("データ!"&方法!$D$33&4の&4が下にコピーすると&5、&6、&7と増えていかなかったのです。
 
=IFERROR(LOOKUP(1,0/FIND(方法!$C$37:$C$41,INDIRECT("データ!"&方法!$D$33&4))/LEN(方法!$C$37:$C$41),方法!$D$37:$D$41),"")
 
なので
 
=IFERROR(LOOKUP(1,0/FIND(方法!$C$37:$C$41,INDIRECT("データ!"&方法!$D$33&ROW($A4))/LEN(方法!$C$37:$C$41),方法!$D$37:$D$41),"")
 
と修正し、下にコピーすると行番号が可変($A4,$A5,$A6,$A7)するようになったのですが、関数の結果が返って
こない原因が分かりません。
 
ご指導よろしくお願いします。
 
 

回答
投稿日時: 19/09/09 16:17:30
投稿者: んなっと

最初からそう質問してくれれば早かったのに...
 
↓下方向だけなら
 
=IFERROR(LOOKUP(1,0/FIND(方法!$C$37:$C$41,T(INDIRECT("データ!"&方法!$D$33&ROW(A4))))/LEN(方法!$C$37:$C$41),方法!$D$37:$D$41),"")

投稿日時: 19/09/10 09:14:24
投稿者: chokobanana

んなっと様 説明下手で申し訳ございません。
 
後学の為にもう少し教えて頂けますでしょうか。
T関数というものがあるのは初めて知りました。
 
NDIRECT("データ!"&方法!$D$33&ROW(A4))の答えは文字列ではないのでT関数で文字列に
変換しているということなのでしょうか。
 

回答
投稿日時: 19/09/10 16:55:10
投稿者: んなっと

ほかにこんなのも。
=IFERROR(LOOKUP(1,0/FIND(方法!$C$37:$C$41,INDIRECT("データ!"&方法!$D$33&MIN(ROW(A4))))/LEN(方法!$C$37:$C$41),方法!$D$37:$D$41),"")
 
=IFERROR(LOOKUP(1,0/FIND(方法!$C$37:$C$41,INDEX(INDIRECT("データ!"&方法!$D$33&ROW(A4)),1))/LEN(方法!$C$37:$C$41),方法!$D$37:$D$41),"")
 
INDIRECT( ROW( ) )が通常の
・セル参照(複数セル範囲も含む)
・数値の配列
・文字列の配列
ではなく、
・[セル参照から構成される?]特殊な配列
になってしまうのかもしれません。複雑。
 
ただ、この特殊性を利用して
条件付き3D集計の処理に N(INDIRECT( ROW( ) ) ) が使われることもあります。

投稿日時: 19/09/11 12:44:39
投稿者: chokobanana

んなっと様 ご丁寧にご指導いただきましてありがとうございます。
 
教えて頂いたことを色々と試してみて勉強させて頂きます。

トピックに返信