• ベストアンサー

エクセル関数 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
質問者

お礼

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

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

関連するQ&A

  • 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の部分などにも 多少、説明を加えていただけると助かります。 なにか私のほうで情報提供が不足していれば教えてください。

  • エクセル2007 OFFSET関数 INDIRECT関数

    エクセル2007でOFFSET関数とINDIRECT関数を用いてセルの入力規則をして、リスト表示したいと思っています。 入力規則のリストは動的な値を設定したいと思っています。  ABCDE 1あいうえお 2かきくけこ 3さしすせそ 4たちつてと 5なにぬねの というシートA列に”データベース1”B列に”データベース2”・・・といった具合に名前を定義します。このデータベースは行がどんどん増えていく可能性があるため、名前の定義の参照範囲欄に (1)=OFFSET($A$1,0,0,COUNTA(A:A),1)  としました。 別シートに 表示したいセルで入力規則→設定タブ→入力値の種類→リストを選択。 元の値の欄に (2)=INDIRECT(A2&"1",FALSE)  としました。  ※A2は”データベース”と入力してあるセルです。 ここからがわからないのですが 上記式(1)、(2)の両方とも単独で使用した場合は欲しい値が得られるのですが、組み合わせて使用した場合はリストが出てこなくなってしまいます。 1)組み合わせて使うことはできないのですか 2)ほかにいい方法はありますか ということを質問します。 よろしくお願いします。

  • エクセルの関数について。

    エクセルの関数。 Sheet1の作業列1のA2セルに =IF(COUNTA(Sheet2!2:2)=0,"",IF(Sheet2!A2="",A1,Sheet2!A2)) →数式1とする 作業列2のB2セルに =IF(A2=$D$2,ROW(),"") →数式2とする という数式を入れA2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピーしておきます。 (Sheet2の行数以上コピーしておく) そしてE2セルに =IF(COUNT($B:$B)<ROW(A1),"",INDEX(Sheet2!B:B,SMALL($B:$B,ROW(A1)))&"") →数式3とする という数式を入れオートフィルで列方向・行方向にコピーする。 教えて頂きたいことは、数式1、数式2、数式3が何を意味しているのか。 と、この数式を使って、表を作成したのですが、ある特定の数字(コード、D2セルに入力)を入力しても反応してくれない。 (E2~H2まで、空白セルの状態になります。) (sheet2は約1200行あります。) 教えて頂けないでしょうか?

  • OFFSET関数がわかりません。

    COUNTBLANKを使用して空白の合計を求める箇所の数式に =COUNTBLANK(A2:A11) で空白を数えているのですが、A12~A15に新たに行を挿入し =COUNTBLANK(A2:A15) と、その都度変更して空白を数えているのですが OFFSET関数を使用して数式を固定して値を求めるには どのような数式になるでしょうか? 何もわからないので、できれば数式を教えてください。

  • エクセル SUMPRODUCT と OFFSET

    いつもお世話になります。 SUMPRODUCT関数で集計したいのですが、OFFSET関数を組合せてA1に関数を入力し、右にひっぱるだけで36ヶ月分を集計したいと思い、下記の計算式を入力したのですが#VALUE!になり困ってます。 A1=SUMPRODUCT((OFFSET(data!$A$1,1,COLUMN(A1)*3-3,99,1)=$G$1)*(OFFSET(data!$B$1,1,COLUMN(A1)*3-3,99,1)=$H$1),(OFFSET(data!$C$1,1,COLUMN(A1)*3-3,99,1))) dataシートには、A列:商品CD、 B列:営業所CD、 C列:売上金額 の3列のデータが、36か月分108列あります。 集計するシートのG1に商品CDを、H1に営業所CDを入力すると、A1~A36に集計結果を返したいのですが、教えてくださいませんか

  • offset関数について

        OFFSET関数で、行を自動計算で算出する方法をご教示下さい。 例) =OFFSET(A1,1,1)を =OFFSET(A1,#+1,1)     といったように計算式で入力したいと考えています。          現状ですと、横にドラッグして自動計算を試みると計算できません。     宜しくお願いします。

  • OFFSET,MAX関数併用で値を求める

    OFFSET,MAX関数併用でD1にB列最大値"5"の左にある文字"こ"の値を出したいのですが数式を以下のようにしたのですができません。どなたか関数がわかる方よろしくお願いします。 =OFFSET(ADDRESS(MAX(B1:B9)),0,-1) A B C D 1 あ 1 か 2 い 3 3 う 0 4 え 1 5 お 2 6 か 5 7 き 2 8 く 1 9 こ 4

  • excelの関数(offsetやaddressについて)

    excelの質問です。 現在C4からC8に、SMALL関数を使って、指定範囲中の1番目から5番目までの小ささの値を抽出しています。 そして、B4からB8に、C4からC8の抽出元のセルの6列左にあるセルの値「名前」を抽出しようとしているのですが、うまくできません。 offset関数の"基準"はセルの番地でないといけないようなので、 、値を返すSMALL関数は直接代入できません。 ネットで調べたら、抽出された最大値の番地を返す式 ADDRESS(SUMPRODUCT((MAX(K2:K75)=K2:K75)*ROW(K2:K75)),SUMPRODUCT((MIN(K2:K75)=K2:K75)*COLUMN(K2:K75)),4) を見つけたのですが、これを直接offset関数の"基準"に代入してもなぜかエラーが出てしまいます。 どうしたらうまくできるでしょうか。 全く上記に書いたやり方と違っても構いません。 よろしくお願いします。

  • ExcelのSMALL関数について

    ExcelのB列(B2:B50)にフラグ「0」または「1」が入力されています。 フラグ「0」が入力されている行番号を関数を使用して取得したいと思っています。 B列のフラグは順次更新されており、フラグ「0」の個数は複数あります。 下記の関数式(以下多めにオートフィル)で上記のことができるようになったのですが、 =IF(COUNTIF(B$2:B$50,0)<ROW(A1),"",SMALL(INDEX((B$2:B$50<>0)*10^5+ROW(B$2:B$50),),ROW(A1))) SMALL関数式の部分↓↓の意味がよくわかりません。 SMALL(INDEX((B$2:B$50<>0)*10^5+ROW(B$2:B$50),),ROW(A1)) どなたかご教授いただけないでしょうか。

  • エクセルの関数で2

    エクセルの表で、関数を使って、自動で入力したいのですが、条件が複数の場合の方法を教えて下さい。 例えば、セルA1に日本と入力した場合は、B1に1,同じA1に韓国と入力した場合は、同じB1に2、A1に中国と入力した場合は、B1に3・・などです。 入力するセルも、反映させるセルも同じで、条件を複数です。お願いします。 この質問で、先程数々の回答を頂きました。ありがとうございます。 =IF(A1="","",(A1="日本")*1+(A1="韓国")*2+(A1="中国")*3) この数式を使ってみようと思いますが、更に加えて、質問します。表に、この関数を使ったとして、日本、韓国、中国以外の国名が入力された場合に空欄のままにするには、どの様に式を変えれば良いでしょうか? お願いします。

専門家に質問してみよう