• ベストアンサー

関数で行の挿入、削除で範囲がズレてしまう

HLOOKUP関数を使い検索値を日付にして、ある項目の時間を表示させているのですが、項目を挿入、削除によって時間がズレてしまいます。対応する関数はありますか? =HLOOKUP(AS$223,$D$3:$AH$110,108,FALSE)の110の範囲が変わってしまいます。分りづらいですが宜しくお願いします。

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

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

行挿入・行削除しても「正しく追従させる」には 方法1: =INDEX($110:$110,MATCH(AS$223,$3:$3,0)) とします 方法2: =HLOOKUP(AS$223,$D$3:$AH$110,ROWS($D$3:$AH$110),FALSE) とします。

rate-rate
質問者

お礼

お返事遅れてm(__)mご回答有難う御座いました。方法1、2共にOKでした!もっと勉強します!

その他の回答 (6)

noname#204879
noname#204879
回答No.6

=HLOOKUP(AS$223,$D$3:$AH$110,108,FALSE) 1.3~108行目全体を選択 2.[名前ボックス]に(例えば) raterate と入力して、Enterキーを「エイヤッ!」と叩き付け 3.次のように式を変更すれば如何?   =HLOOKUP(AS$223,$D$3:$AH$110,108,FALSE)                   ↓   =HLOOKUP(AS$223,$D$3:$AH$110,ROWS(raterate),FALSE)

rate-rate
質問者

お礼

お返事遅れて済みませんでしたm(__)m兎に角無知で…でも参考になりました。もっと勉強が必要ですね。

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.5

あの・・・みなさんOffsetを使う方法を書いてますが、これ を使うと確かに参照関係は「ずれません」けど、102行目 を消した時でも、D3:AH110を参照してしまいます。 要は、103行目で参照された結果を、行削除することで 102行目参照に変更する(=参照範囲をD3:AH109にする) 必要があるのかどうか・・・って話です。 変更する必要がないなら、Offsetを使うというのは良い手 ですけど・・・。

rate-rate
質問者

お礼

お返事遅れて済みません。変更する必要ありますね。色々試したがダメでした。無知なもので…有難う御座いました。

  • chie65535
  • ベストアンサー率43% (8524/19375)
回答No.4

例えば、HLOOKUP関数が書いてある、自分自身のセルが「C2」だとしましょう。 =HLOOKUP(AS$223,$D$3:$AH$110,108,FALSE) を =HLOOKUP(OFFSET($C$2,221,42,1,1),OFFSET($C$2,1,1,108,31),108,FALSE) にしましょう。 C2自身が移動しない限り、必ず同じ範囲、同じ場所を参照します。行や列の追加削除には影響されません。 但し、行や列の追加や削除で、C2自身が移動した場合、範囲と場所もC2に連動して移動します。 OFFSET関数の基準点を「絶対に動かないセル」に、例えば「$A$1」とかにすれば、C2セルが移動しても連動せず、必ず同じ範囲を見るようになります。

rate-rate
質問者

お礼

お返事遅れてm(__)m兎に角無知なもので…中々巧くいきませんでしたが勉強になりました。

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

こんにちは! >110の範囲が変わってしまいます とありますので、行・列の挿入及び削除を行っても 常に範囲は D3:AH110 に固定したい!という解釈で・・・ =HLOOKUP(AS$223,INDIRECT("$D$3:$AH$110"),108,FALSE) としてみてはどうでしょうか? ※ 検証していませんので、お望み通りにならなかったらごめんなさいね。m(_ _)m

rate-rate
質問者

お礼

お返事遅くなって済みませんm(__)m良いヒントになりました。有難う御座いました。

  • chie65535
  • ベストアンサー率43% (8524/19375)
回答No.2

OFFSET関数を使うと、行や列の追加や削除をしても、参照範囲は変わりません。

rate-rate
質問者

お礼

お返事遅れてm(__)m有難う御座います。なかなか巧く行きません。

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

挿入・削除するとき、「3行目、110行目」以外の行で、 行単位で挿入・削除すれば、参照関係はずれません。 逆にいえば、それ以外の方法で挿入削除をすると、 参照関係は必ず崩れます。 関数などで逃げる方法はありませんので、それ以外の 方法でうまく削除したいなら、削除できる手順をマクロに 登録するとか・・・という方法になります。

rate-rate
質問者

お礼

早速のご回答有難う御座います。やはり関数では無理でしたか!?m(_ _)m

関連するQ&A

  • HLOOKUP関数とINDIRECT関数の組み合わせについて困っていま

    HLOOKUP関数とINDIRECT関数の組み合わせについて困っています。 「=HLOOKUP($A$3,[計画.xls]日付合計!$B$3:$AI$18,12,FALSE)」 上の数式だと正常に結果が得られます。 HLOOKUP関数の範囲を「計画」ファイルの「日別合計」シートのB3:AI18に 設定しています。 このHLOOKUP関数の範囲をINDIRECT関数を用いて設定したいと思っています。 ※原紙シートのF25のセルに「計画」とL25のセルに「日付合計」と入力されています。 そこで次のように入力しましたが、うまく表示されません。 「=HLOOKUP($A$3,"["&INDIRECT("原紙!F25")&".xls]"&原紙!L25&"!"&$B$3:$AI$18,12,FALSE)」 どこが誤っているか、教えていただけないでしょうか。

  •  挿入で、関数式の範囲を変化させない方法。

    初めまして、よろしくお願いします。  関数式 =COUNTIF(AG7:AS7,">=0") が有ります。列AAに一列挿入すると、式は =COUNTIF(AH7:AT7,">=0") と範囲が変化してしまいます。範囲((AG7:AS7)を変化させない方法が有りましたら、よろしくお願いします。

  • エクセルのHLOOKUP関数の検索範囲指定で、複数のシートにわたる範囲

    エクセルのHLOOKUP関数の検索範囲指定で、複数のシートにわたる範囲指定は出来ないのでしょうか。 例えば、シート1からシート5まであり、各シートのA1:D10を指定するとか。

  • 関数について

    例えば「A1:D10」の範囲の所々に入力されている文字列等を検索する関数と「HLOOKUP」関数を組み合わせて使うのにはどうしたらいいのでしょうか。(下の数字を返したいのです)  (例)○○費      5,000           ××費           10,000                △△費                 8,000

  • エクセルの参照行の挿入による追加と行の削除に対応できる関数を教えてくだ

    エクセルの参照行の挿入による追加と行の削除に対応できる関数を教えてください。 sheet1を印刷用ページ、sheet2をデータ用ページとしています。 sheet2は頻繁に追加や削除をするのですが、単純な =sheet1!A1 ですと、 sheet2に追加してもsheet1に追加されたデータが反映されない。 sheet2の行を1つでも削除するとsheet1のその行は#REF!というエラーに。 という状態です。下記内容に対応できる関数はあるでしょうか。 sheet2がこのような時 行  A あ B い C う D え sheet2Dに「お」を挿入すると sheet1がこのようになるように。 行  A あ B い C う D お E え また、B行を削除したらsheet1が 行  A あ B う C え となるように。 そして、可能ならばコピーのドラッグで複製できるようにしたいのですが・・・ 条件が色々ありますが、よろしくお願いします。

  • Excelで行挿入しても計算範囲を変えたくない

    Excel2003です 例えばセルD200にD$4:D$100とセル範囲を指定した計算式があります。 この表に行を追加したり削除したりすると自動的にセル範囲が修正されますが、このセルの計算式だけ自動修正がされず常にD$4:D$100で固定する方法を教えてください。 困る一例として一番最初のデータ行に新しいデータを追加する場合、4行目を指定して行挿入しデータを入れると計算式はD$5:D$101に変わってしまい新しいデータが無視されてしまいます。 なおセル範囲に名前を付けてやってみましたが同じ結果でした。また行の挿入と削除を使わずデータ内容のクリヤー、移動などで表を更新すれば問題ないことは解っているのですが面倒です。

  • エクセルでHLOOKUP関数の選択範囲について

    エクセルでHLOOKUP関数を使って、検索したいのですが、 シートは、一覧表のシートと データが入っているA101、B203、C305、...シートは300シートくらいあります。 一覧表のシートには、下のような表になっていて、      A列  B列  C列  D列 ...          1003、1004、1005、1006、... 2行目 A101  3行目 B203 4行目 C305       .       .       . データのはいっているシート、A101は下の表になっています。      B列 C列 D列、・・・、Z列 2行目 1004、1005、1006、... 3行目 100、 200、 150、... 一覧表のB列の2行目には HLOOKUP(B2、シートA2のB2:Z3、2行目、FALSE) という感じで、シート名をセルA2のものを参照にして 探して表示させ、B列、C列、D列の2行目から下の行も 表示させたいのですが、うめくできませんでした。 INDIRECT関数を使ってみましたが、セル範囲が無効という エラーがでてしまいます。↓こんな感じで入力してみたのですが... SUMPRODUCT((INDIRECT($A2&"!$B$2:$Z$3"))=$B$1,(INDIRECT($A2&"!$B$2:$Z$3"))) 1つづつデータを見て手打ちはデータが多く、 どんどんデータが増えていくので できれば関数を使って表示させたいと思っています。 詳しい方いらっしゃいましたら、どうか教えてください よろしくお願いします。

  • Excel 関数の挿入欄に表示されない関数

    Excelで2っほど質問です。お願い致します。 Office2003 Win2000です。 1.Excel2003で、"DATEDIF"などが、関数の挿入欄に表示されません。日付/時刻 、全ての関数一覧でも。(日付関数だけでも、10個以上あると思うのですが、4個しか表示されていません。 ツールからアドインなどをみましたが、それらしい項目が見あたりません、またExcelの追加インストールを見ましたが、ここにもそれらし項目がありません。見落としているかもしれません。手で入力すれば良いのですが。すべての関数を表示する事は可能なのでしょうか? 2.Excelの入力で、(1905年から)1905/1/1から2005/1/1まで、1906/1/1 1907/1/1 と一気にコピーしたいのですが、たんにコピーすると、1905/1/2 1905/1/3となってしまいます。簡単にできる方法がありましたら、ご教授をお願い致します。 これは、DATEDIFを使用して、年齢を求めようとしています。

  • エクセルでIF文とHLOOKUP関数の合わせ技で。。。

    エクセルで関数について質問です。 HLOOKUP関数で検索した先が空欄なら空欄、値があるならHLOOKUP関数で検索した値が入るようにしたいのです。 たとえば、私が作成した関数は =IF(HLOOKUP($A$1,Sheet1!$A$1:$D$10,2,0)="","",HLOOKUP($A$1,Sheet1!$A$1:$D$10,2,0)) この場合、同じ内容のHLOOKUP関数を2度入力しなくてはなりません。 そうではなく、もっとスマートに出来る方法がありましたら教えていただきたいのです。

  • マクロで不要な行を削除したい

    エクセル97を使っています。  日付 名前 品目 ・・・  1 2 3 ・ ・ といった表で、日付は2003/2/13という表示になっています。 そこで、今日以前(今日は含まない)の日付の行を削除してしまいたいのですが どうすればいいでしょうか? ちなみに、空白行を削除するのに、 Application.ScreenUpdating = False On Error Resume Next With Columns("E:F") .SpecialCells(xlCellTypeConstants).EntireRow.Hidden >=TODAY() .SpecialCells(xlCellTypeFormulas).EntireRow.Hidden >=TODAY() .SpecialCells(xlCellTypeComments).EntireRow.Hidden >=TODAY() .SpecialCells(xlCellTypeVisible).EntireRow.Delete .EntireRow.Hidden = False End With このような記述を使っています。 「今日」というとTODAY()関数ですよね。 でも、関数ってマクロに組み込めるのでしょうか? しかも「今日以前」という記述はどうすればいいのか? など考えると、わけがわからなくなりました。 今日以前の行を削除するマクロを教えてください。 ちなみに、日付の行では、曜日を追記する関数を使っております。 条件書式も3パターン使い切っております。 よって、マクロで行いたいです。 宜しくお願いします。

専門家に質問してみよう