アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel2013のOFFSET関数を使った時のエラーの原因を教えてください。
(他のやり方もあるのでしょうが、今回のエラーの原因が知りたいです)

A1に=Z1と入力して右や下にオートフィルすればZ1周辺の値をA1周辺に表示できます。
同じことを=OFFSET($Z$1,ROW(A1)-1,COLUMN(A1)-1)で表したいときに
「$Z$1」というセル番地を計算から得ようとするとエラーになってしまい困っています。

例えばA1:Z1の中からE2に入力した文字列と同じ値を持つセルの番地を得たいときは、=ADDRESS(1,MATCH(E2,A1:Z1,0),1)でOKですね?
それなのにこの数式をそのままOFFSET関数の"基準"の部分に持ってくるとエラーになってしまいます。
=OFFSET(ADDRESS(1,MATCH($E$2,$A$1:$Z$1,0),4),ROW(A1)-1,COLUMN(A1)-1)
ADDRESSで得られるセル番地は文字列として扱えないんでしょうか?

(ちなみに=OFFSET($Z$1,ROW(A1)-1,COLUMN(A1)-1)と直接打てば正しい結果が得られます。)

A 回答 (2件)

対策はNo.1様のとおりですね。



> 今回のエラーの原因が知りたいです

ADDRESS関数が返すのはアドレスを示す「文字列」にすぎません。そしてOFFSET関数で必要なのは、参照(セルそのもの)です。なのでデータの種類が違うのでエラーになります。
そこで「アドレス文字列」を「参照」に変換することが必要になりますが、それを行うのがINDIRECT関数になります。
    • good
    • 2
この回答へのお礼

分かりやすい説明ありがとうございました。
Excelの因数としてつかうものは””で囲ったものだけが文字列として扱われると思っておりましたが、そうではなくても文字列として扱われてしまうものがあるとは知りませんでした。勉強になりました。

お礼日時:2017/02/20 08:11

=OFFSET(INDIRECT(ADDRESS(1,MATCH($E$2,$A$1:$Z$1,0),4)),ROW(A1)-1,

COLUMN(A1)-1)
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A