- ベストアンサー
Offset indirectなどの使い方(Excel関数)
次のような関数に直面しました。 =IF(OFFSET(INDIRECT("'ef="&$A$1&"'!B2"),ROW()-2,COLUMN()-2)="","",OFFSET(INDIRECT("'ef="&$A$1&"'!B2"),ROW()-2,COLUMN()-2)) この関数全体の解説もしていただきたいのですが, 'ef=の'の使い方、!の使い方、ROW()-2の部分などにも 多少、説明を加えていただけると助かります。 なにか私のほうで情報提供が不足していれば教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>'ef=の'の使い方 ⇒シート名参照する場合、アポストロフィ文字を先行する。従来のsheet1等の名称は省略可。 >ROW()-2 ⇒OFFSET関数は0オリジンですので、原点がシートB2としている為、行位置、列位置を0にしている。 機能としては、抽出用シートのA1にシート名("EF="以下の名称)を設定するとこの関数を設定しているセルに対応するEF=シート名のセル内容を表示するという事だと思います。
その他の回答 (1)
- mshr1962
- ベストアンサー率39% (7417/18945)
■INDIRECT("'ef="&$A$1&"'!B2") INDIRECT関数は間接参照の関数です。 引数に表示されたセル名のセルの値を表示します。 上記の式は、A1="×××"だとすると「'ef=×××'!B2」の参照になります。 ''で囲まれた「ef=×××」はシート名です。 ■OFFSET(INDIRECT("'ef="&$A$1&"'!B2"),ROW()-2,COLUMN()-2) OFFSETは基準のセルから移動値と幅・高さでセル範囲を参照する関数です。 上記の式は「'ef=×××'!B2」を基準に ROW()-2の行移動[数式のある行が3行なら1行下、4行なら2行下]と COLUMN()-2の列移動[数式のある列がC列なら1行右、D列なら2行右]に移動します。 ■=IF(OFFSET(INDIRECT("'ef="&$A$1&"'!B2"),ROW()-2,COLUMN()-2)="","",OFFSET(INDIRECT("'ef="&$A$1&"'!B2"),ROW()-2,COLUMN()-2)) 上記の式が B2にセットなら「'ef=×××'!B2」の内容が表示されます。 C2にセットなら「'ef=×××'!C2」の内容が表示されます。 D2にセットなら「'ef=×××'!D2」の内容が表示されます。 B3にセットなら「'ef=×××'!B3」の内容が表示されます。 B4にセットなら「'ef=×××'!B4」の内容が表示されます。 つまりシート「ef=×××」の数式と同じ座標の参照になります。 別の式での置き換えなら =IF(INDIRECT("'ef="&$A$1&"'!"&CELL("Address"))="","",INDIRECT("'ef="&$A$1&"'!"&CELL("Address"))) CELL関数は情報関数です。引数によってセルの情報を表示します。 CELL("Address")はセルの座標を文字列として表示します。
お礼
有難う御座いました! 最後のCELL関数の説明もとても分かり易かったです。 助かりました。
補足
早速、有難う御座いました! 済みませんが、INDIRECT("'ef="&$A$1&"'!B2"), の意味は大体わかりました。自分でも Excelで試してみまして、うまく機能しました。 しかしその後の&"'!B2"が少し分かりません。 恐らく「B2のセルを基準として」、だと は思いますが、この場合の’はシート名ではないですよね? また!はどのように用いたら良いかも分かりません。 この2つの使い方を教えて戴けませんでしょうか? 申し訳御座いませんが、宜しくお願いします。