- ベストアンサー
エクセル計算での#REFエラーの解決方法とは?
- エクセル計算で#REFエラーが発生する原因は、数式の範囲を超えたデータを切り取る際に生じることがあります。
- このエラーを回避するためには、切り取る範囲に数式が含まれている場合は、数式のコピー&貼り付けを行う必要があります。
- 数式のオートフィルではなく、コピー&貼り付けを行うことで、正常にデータを切り取ることができます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
オートフィルは、コピー元の上下の状態、データの状態を見て、勝手に中身を改編しながらコピーしてくれる機能。 切り取り>貼り付けは、そういう勝手に改編しながらのコピーはしてくれない機能。 機能の違いです。 切り取り>貼り付け(または、コピー>貼り付け)を使うならば、貼り付けた後で式をそのセルに合うように変更する必要があります。 このような場合、VLOOKUP関数などを使って、別表からデータを引用する形式にしておくのが一番間違いがなく、管理も簡単なんですが…。 例えば、こんな感じ。 E列 1行目 施設種別 2行目 映画館 3行目 遊園地 4行目 映画館 F列 1行目 コード 2行目 1 3行目 2 4行目 3 C列 2行目 =VLOOKUP(A2,$E$1:$F$4,2,TRUE) C列2行目に入れた式をオートフィルで下へコピーすればOK。 逆に、コードを入れれば施設種別が日本語で表示させることも可能です。 上記表の例だと、施設種別が100件だろうが何だろうが、自動的にコード番号を持ってきてくれるようになります。 IFのネスト(入れ子)だと限界がある処理ですし、何よりも一か所変わっただけでIF関数を全部見直す必要があるので、IFは使わないというのがこういう処理の方法のコツです。
その他の回答 (3)
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばA2に売店となっているときにお示しの式がC2セルに入力されていればC2セルには1と表示されていますね。C列ではC2セルの式を下方にオートフィルドラッグしている状態にしておきます。 そこでC2セルと参照元との関係をみるためにC2セルを選択してから「数式」タブから「参照元のトレース」をクリックします。A2セルからC2セルに向かって矢印が表示されています。 次にA2セルを選択して「切り取り」を行い、例えばA5セルに貼り付けを行います。するとC5セルにはエラーが表示されますね。しかし、C2セルの値は1のままで変わりません。C2セルを選んで「参照先のトレース」を選択してください。コピーして貼り付けた先のA5セルからC2セルに向かって矢印が表示されます。 そのために切り取って貼り付けた後でもC2セルの値は1のままになっているのです。従来のA5セルは無くなってその場所にはA2セルが貼りつけられたと同じ状態になっているのです。 A2セルからB2セルを切り取って他の行でも正常な表示になるようにするためには次の式をC2セルに入力して下方にオートフィルドラッグすればよいでしょう。 =IF(INDEX(A:A,ROW(C2))="売店",1,IF(INDEX(A:A,ROW(C2))="遊園地",2,IF(INDEX(A:A,ROW(C2))="映画館",3,))) このような式では参照先のトレースを見ればわかるようにA2,B2セルなどは参照元はなっておらず切り取りや貼り付けに影響されない式となっているからです。 それにしてもなかなか気のつかないことをよくご質問くださいました。お陰さまで、こちらも勉強になりました。
- imogasi
- ベストアンサー率27% (4737/17069)
質問を読んで感じるのが、IF分をネストして、名称からコードを割り出している点 VLOOKUP関数ぐらいエクセル関数の常識です。それをGoogleででも(VLOOKUP関数で)照会して、勉強し役立てること。 http://www.yoshikawa.co.jp/ybs/skilup/ybs0308.htm ほか腐るほどたくさんある。 ーー エクセルの式の複写(セルの貼り付け)の仕組みを勉強のこと。 エクセル関数理解の基礎の基礎。 エクセル関数は、 在るセルに式を入れると計算などしてくれること。 他(近接)セルには、改めて式を打ち込まなくても、オートフィルや貼り付け、Ctrl+ENTERで、引数セルを、決ったルールで変化させて、入れてくれること。 の2点が決定的に便利な点である。 ーー 後者の「決ったルール」を勉強すること。 近接セルとは、より下の行、より右の列で、上方向や、左方向に式を複写は要注意。 この質問の場合C列でA列(C列からして2列前)のデータを参照している式を、A列に貼り付けて持っていくと、A列の2列前に式を直そうと駿河、そんなものは構造上存在しないので、REFエラーにせざるを得ないわけ。(絶対番地に指定して無い場合)。 Googleで「エクセル 式の複写 番地の変化」などで照会し勉強すること。 別件だが http://www7.ocn.ne.jp/~nsuido/exce.htm コピーした計算式がうまく動作しない も参照。
- P5Q
- ベストアンサー率40% (86/210)
C列に入っている式で、指定されているセルが A2 なのに A列に張りつけると、3列分左を指定することになります。 なので、A2のA列より左の列が無いため #REF! のエラーになります。 式が正しく、エラーにしないためには、 =IF($A2="売店",1,IF($A2="遊園地",2,IF($A2="映画館",3,))) A2の前に $ を付けつると良いです。
お礼
ありがとうございました。 勉強中なのですが、がんばります。