プロが教える店舗&オフィスのセキュリティ対策術

エクセル関数のことで質問です。

別シートセルから値をもってくるように関数を設定しているときに、
別シートの行を削除したりなどすると
参照セルがないということで#REF となってしまいますが、
行削除した後に置き換わった新たなデータを引っぱり、#REFとならないようにするにはどうすればよいでしょうか。

(B2のセルにあったものが、B行を削除したことによって、C2セルにあったものがB2セルにきたとき、そのセルを引っぱってほしい)

質問者からの補足コメント

  • 回答ありがとうございます!

    追加質問失礼いたします_(._.)_
    初心者の質問で申し訳ないです。

    =INDEX(Sheet1!B:B,2)
    こちらをすべての行にコピペするときは
    とうすれば

    =INDEX(Sheet1!B:B,2)
    =INDEX(Sheet1!B:B,3)
    =INDEX(Sheet1!B:B,4)



    となるでしょうか。

    今やってみますと
    =INDEX(Sheet1!B:B,2)
    =INDEX(Sheet1!B:B,2)
    =INDEX(Sheet1!B:B,2)



    となってしまいますので教えてください_(._.)_

      補足日時:2023/01/31 14:46

A 回答 (3件)

こんにちは



ダイレクトにセルを指定してあれば、被参照セルを削除した場合には、(参照セルが無くなるので)ご質問のようなエラーになります。

間接的に「セルの位置」を指定するような参照方法にしておけば、常にそのセル番地を参照するようになります。
具体的には、INDEX関数、OFFSET関数、INDIRECT関数などで「位置」を指定する方法になります。

例えば、「Sheet1のB2番地」を参照するとして、揮発性関数を避けるなら・・
 =INDEX(Sheet1!B:B,2)
のような要領となります。
    • good
    • 0
この回答へのお礼

助かりました

回答ありがとうございます。
うまくいきました_(._.)_
大変たすかりました。

お礼日時:2023/01/31 18:14

No2です



>=INDEX(Sheet1!B:B,2)
>=INDEX(Sheet1!B:B,3)
>=INDEX(Sheet1!B:B,4)
>となるでしょうか。

第二引数を、行に応じて増加するようにしたいということですよね?
スタートがB2セルからだとして、
 =INDEX(Sheet1!B:B,ROW(A2))
として、下方にフィルコピーでできませんか?
    • good
    • 0
この回答へのお礼

助かりました

追加質問まで回答ありがとうございます。
こちらでできました!
本当に感謝です_(._.)_

お礼日時:2023/01/31 18:15

INDIRECT関数を使ってセルを指定するようにする。



INDIRECT関数は「文字列」をセル番地に置き換える関数ですので、
参照先が削除されても指定先は変わらない。

 =SUM(Sheet2!B2:B10)
  ↓
 =SUM(INDIRECT("Sheet2!B2:B10"))
こんな感じ。
    • good
    • 0
この回答へのお礼

あなたに会えてよかった

とてもわかりやすい回答ありがとうございますm(._.)m
おかげさまでうまくいきました!
感謝いたします。

お礼日時:2023/01/31 18:13

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