• ベストアンサー

エクセル関数 OFFSET

A表を元に、「OFFSET関数」で金額を入力するB表があります。 この場合の数式「=OFFSET($B$3,ROW()-3,3)」にある -3 の意味が分かりません。 どなたかご教授ください。 よろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんにちは! すでに回答は出ていますので、参考程度で目を通してみてください。 数式が入っているI4セルにお示しの数式を入力すると ROW()=ROW(I4) のことですので、結局「4」ということになります。 ROW()-3=1 となりますので、 =OFFSET($B$3,ROW(I1),3) と同じ意味になります。 I4セルの数式の意味は B3セル(絶対参照)から1行下で3列右側のセルを表示しなさい!という意味になり、 オートフィルで下へコピーするに従って、 ROW(I1) → ROW(I2) → ROW(I3) ・・・となっていきますので、表示するセルが1行ずつ下へずれることになります。 尚、このROW()の括弧内のセル番地は行番号ですので、「A1」でも「B1」でも同じ結果になります。 質問では品名の重複があるので、余計なお世話になるかもしれませんが、 もし品名に重複がないのであれば =VLOOKUP(H4,$B$4:$E$9,4,0) としてオートフィルで下へコピーしても同じ結果が得られると思います。 (エラー処理はしていません) 本来であればOFFSET関数よりもこちらのほうがおススメです。 万一元データに変更があれば全く違ったデータが表示されると思いますので・・・ 以上、長々と書きましたが 参考になれば幸いです。m(__)m

tomkon
質問者

お礼

詳しい説明をありがとうございます。 VLOOKUPも含めて表を見直してみます。

その他の回答 (4)

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.5

No.4 の回答にけちを付けるつもりはありませんが ・・・ 説明はいいのですが、質問で提示され他表からすると、VLOOKUP関数では無理ですね (品名に対応する金額を求めていないようですね) 質問者が、何をなさりたいのかの説明がありません 質問で、提示された式、表を元に憶測で式を作成すると 今回の場合、単に I4=E4 でいいのではないかな ? 質問が、単に なぜ -3 という数値が出るのかという質問であれば >「=OFFSET($B$3,ROW()-3,3)」 OFFSET(基準,行数,列数,高さ,幅) この式がH4に入っていおりの値を得たい ということであれば 行について考えると H4=OFFSET($B$3,ROW(H4)+α,3)=E4 3(基準$B$3) + (ROW(H4)+α) = 4 (参照の行数E4) 3+ 4 +α = 4 α = -3 列について考えると H4=OFFSET($B$3,ROW(H4)+α,β)=E4 2(基準$B$3) + β = 5 (参照の列数E4) β = 3 このように、基準・参照セルを元に 逆算して 行数,列数,高さ,幅 等を求めます そのような意味で、数あわせと 前回回答しました

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.3

>「=OFFSET($B$3,ROW()-3,3)」にある -3 の意味が分かりません。 提示された式から推測して二人の方から回答が出ていますので 解決していると思いますが・・・ 質問以前の問題ですが・・・ 質問者が何をしたいのかが記述されていませんね? 何をやりたいかによって式も変化します なぜ、OFFSET関数の参照が $B$3 なのかの説明もありませんね =INDEX($E:$E,ROW()) でもいいのかな >-3 の意味が分かりません この数値に意味はありません、単なる数値あわせですね

tomkon
質問者

お礼

お礼が遅くなってすみません。 早々のご回答ありがとうございます。 >なぜ、OFFSET関数の参照が $B$3 なのかの説明もありませんね 前任者が作った表なのですが、その方とは連絡が取れないため私も意味が不明です・・・?? INDEXの使い方も勉強してみます。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

ROW関数は引数を入力しないと、入力したセルの行番号を取得します。 そのため、入力するセルによって値を増減する必要がでます(今回のケースでは4行目に入力したので「‐3」しています)。 このようなケースでは、入力するセル位置で調整する必要がある「ROW()-3」のような形ではなく、1から始まる値の場合なら「ROW(A1)」とセルを相対参照して開始番号を明示するのがわかりりやすい関数の使い方です。

tomkon
質問者

お礼

お礼が遅くなってすみません。 早々のご回答ありがとうございます。 >このようなケースでは、入力するセル位置で調整する必要がある「ROW()-3」のような形ではなく 仰るとおり、調整で手間どっていました。 わかりやすい使い方をありがとうございます。

  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.1

>=OFFSET($B$3,ROW()-3,3) B列の3行目を基準にしています。 選択しているセルの行番号はROW()=4ですから、基準の行から1行目の値を参照するためにはROW()-3=4-3=1としなければなりません。 列番号は基準のB列から3列目のE列の金額を参照するため3となります。

tomkon
質問者

お礼

お礼が遅くなってすみません。 早々のご回答ありがとうございます。 理解できました。