• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:この式はなぜエラー #VALUE! になるのだろう?)

Excel OFFSET関数を使用した配列数式でエラー #VALUE! が発生する理由は?

このQ&Aのポイント
  • ExcelのOFFSET関数を使って配列数式を作成している際に、エラー #VALUE! が発生することがあります。
  • このエラーの原因は、OFFSET関数に渡す引数の不正な値です。
  • 具体的には、表の範囲指定の行数や列数に不一致があったり、配列数式の範囲指定が正しくなかったりすると、エラーが発生します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

COLUMN()もROW()も本来は配列で値を返しているはずです。 ただ、OFFSET関数の引数として、COLUMN()側は受け付けないようです。 配列の縦と横では、そのマトリックスの位置によって返す値が変わってくるのだろうとは思いますが、その先は、全部、推測の話になってしまうから、推測の上に推測の話はやめておきます。 私の考えた数式: {=MAX(INDEX(OFFSET(A$3,COLUMN(A1)-1,0,5,1),,)*MOD(ROW(A1:A5),2))} ただ、OFFSET関数やINDRECT関数は、再計算関数ですから、使いづらい関数だと思います。こういうものは、誰でも、やってみなければ分かりませんが、結果論だと思います。だから、関数は難しいですね。昔、私も同じような配列の質問したことがあった時に、「やってみなければ分からない」と言われましたね。 結局、私は、配列は、パターン以外のものは手を出さないほうが良いということになってしまいましたが、やっぱり、掲示板ではどこでも、新しい方法が見つかっているようですから、私のように、挑戦することは諦めてはいけないようです。(私は、あまり関数の回答はしないようにしていますが……) 単に、Lotus1-2-3との互換性というだけなのか、改訂されていない関数と、改訂されている関数とがあるようです。私は、本格的に、Lotus1-2-3をやってはいないので、詳しくありません。古い関数(VisiCalc側)と、新しい関数(Lotus側とMS側)では、関数にはどういうイキサツがあるかは分かりませんが、意外にも、問題はMS側は認識していることが多いようですね。しかし、変えようとはしないようです。

noname#204879
質問者

お礼

》 OFFSET関数の引数として、COLUMN()側は受け付けないようです そのように考えた方が好いようですね。 》 私の考えた数式: 》 {=MAX(INDEX(OFFSET(A$3,COLUMN(A1)-1,0,5,1),,)*MOD(ROW(A1:A5),2))} 実にお見事だと思います。今回の場合は「A$3」は単に「A3」で可ですね。 》 「やってみなければ分からない」 同感です。 》 私は、あまり関数の回答はしないようにしていますが…… マクロ音痴の私は関数の質問しかできないので、私を見かけたら何とか回答されるようお願いしておきます。 》 問題はMS側は認識していることが多いようですね。 》 しかし、変えようとはしないようです。 仕様という名の口実ですかね。(^_^) 丁寧なコメントをいただいて感謝しております。ありがとうございました。 2010/05/16 21:35

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

その式を「数式の検証」を使って計算をトレースしてみると,COLUMN関数がOFFSET関数の中で配列を残してしまいエラーになっている様子を確認できます。 例えばその式であれば =MAX(OFFSET($A3,SUM(COLUMN(A1)-1),SUM(COLUMN(A1)-1),5,1)*MOD(ROW(A1:A5),2)) などのように変えてみると,エラーを回避できます。 どの関数がこのように問題を起こし,また起こさないのか,明確に示されたガイドラインはありません。経験によって対処を考えていく事になります。 一般にこちらのような初心者さん向けの質問相談で,ただ「こんな便利な計算がありますよ」と配列数式をやみくもに披露しても「実際には使えない」理由のひとつも,この辺りにあります。

noname#204879
質問者

お礼

「COLUMN関数がOFFSET関数の中で配列を残してしまいエラーになっている様子」が私には理解できませんでした。 》 …などのように変えてみると,エラーを回避できます 私には難解すぎますが、仰るとおりであることを確認しました。 何れにしても解決策があることが分かったのは仕合せでした。ありがとうございました。

すると、全ての回答が全文表示されます。

専門家に質問してみよう