• ベストアンサー

Excelでセル参照が移動してしまう事について

Excelで収入と支出と残高が出る表を作っています。 途中、データ入力の抜けているところを見つけては 行の挿入や、データの移動を行うのですが、 そのたび残高の計算式のセル参照がくずれてしまい その都度残高の式を他からコピーし直しています。 - - - 例 - - -   A │B │C  ───────── 1│収入 支出 残高 2│ 30    30(=A2-B2) 3│    20 10(=C2+A3-B3) 4│ 20    30(=C3+A4-B4)     ↓ 4行目に行の挿入をすると、     ↓   A │B │C  ───────── 1│収入 支出 残高 2│ 30    30(=A2-B2) 3│    20 10(=C2+A3-B3) 4│ 5│ 20    30(="C3"+A5-B5)           ↑ なぜか残高の計算式のこの部分だけが 相対参照になりません。 いい方法があったら教えてください。 よろしくお願いします。

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

  • ベストアンサー
noname#79209
noname#79209
回答No.3

「行挿入をする」する行為自体を考え直すべきでしょう。 「挿入する」ということは、質問文に書かれた例以外に、当然日付等の項目があるのでしょう。 データ入力の抜けを見つけたら、最後の行に追加して、後で並び替えをする方が良いのでは?

hujiki
質問者

お礼

これは節穴でした… 実際に試してみましたが、あっさり 解決しちゃいました!! この方法は初心者でもわかりやすいですね。 的に得たアドバイス、どうもありがとうございました。<(_ _)>

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問に書いておられることを追試してみましたが、そのとおりになりますね。原因も心当たりがありませんが。 収入 支出 残高 30 30 20 10 20 30 から20の第4行目をポイントして、行挿入した。 収入 支出 残高 30 30 20 10 20 30 となり、 C5の式は=C3+A5-B5 他の場所で=A2+B2+C3のようなのを入れて行挿入すると普通に複写される。 D4に=C3+A4-B4を入れて行挿入しても、=C3+A5-B5とC3が動かない。 f2セルに20といれて、F4で=F2(20)を入れておきF4で行挿入すると新F5は=F2のままです。 #1のご回答にあるように、「前と結果が同じになるようにするためにそういう」仕様にしてあるのでしょう。MSエクセル開発途上に気づいたか、後で苦情が出て考えて、特別にこのようにしたのかもしれない。 原則を貫いたほうがよいようにも思うが、複雑な表・関数式ではこの方が よいのかな。表完成後の行挿入は怖いですね。

hujiki
質問者

お礼

いろいろ検証なさったようで、大変ありがたく思ってます。 そうですね、この現象はなんで起きるのか考えるよりも、 仕様として受け止めるしかなさそうですね。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

>なぜか残高の計算式のこの部分だけが 挿入したときに、前と結果が同じになるようにするためにそういう仕様になっていると思われます。しょうがないですね。 単純に、C3以下をフィルコピーし直せばいいですけど、 =C2+A3-B3 を =OFFSET(C3,-1,0)+A3-B3 に置き換えるでフィルコピーした状態であれば、 一行挿入しても、質問者の期待通りの式になると思います。

hujiki
質問者

お礼

早速試してみました。 OFFSET関数は初めて使いましたが、 これを使えばちょっとオートフィルをするだけで 直ぐ直せますね(^^) すばやい返答ありがとうございました。

関連するQ&A

  • エクセルで5の倍数の行を参照したい。

    表Aと表Bがあります。Aには各支店の売り上げデータが4行分入っていて5行目ごとにその小計の行が入っています。 さて、表Bにその小計部分だけを抜き出してきたいのです。あまりに多いので手作業でやるのですが大変です。そこで他のセルにc1に5、C2に10、C3に15と5の倍数の数値を入力しておいてそのセルを読ませて行を指定したいのですが 例えば=A5*(C1)のようにセルの行数を式で指定できるのでしょうか。(この例は失敗です。本当はA25を指定したいのです。)相対参照が使えて作成の手間が大きく省けるのですが。おしえてください。

  • エクセルの条件付きの関数(IFなど)の使い方

    よろしくお願いします。 エクセルの表計算で、例えば、”おこづかい帳”のような、収入または支出を各行ごとに一番右の合計欄に自動で計算していく方法について質問します。 例として、3列2行の表で説明します。 A列は収入、B列は支出、C列は残高です。 一行目のA1、B1、C1は最初の一日目なのでC1セルだけに当初のお金500円が入力されています。二行目のB1またはB2の必ずどちらか1つだけに(収入か支出の)金額が入るとしてその時のB3の残高を自動で算出したいです。(実際の表は、それの繰り返しで何行も下に続いていきます。)B1に収入が200円あれば、B3は700円になり、B2に支出200円があれば、B3は300円になるような計算です。 次のような三つの条件になります。 (1)B1(収入)が空欄の時はB2(支出)の値を用いて、B3=A3-B2(2)B2(支出)が空欄の時はB1(収入)の値を用いて、B3=A3+B1 (3)B1、B2ともに空欄の時は、なにも計算しない(B3も空欄になる) そして、B3に入れる式としてこのような式を作りました。 =IF(OR(B1="",B1>0,B1B2=""),(B3=A3-B2,B3=A3+B1,B3="")) しかし、うまく計算されません。 どこを直せばよいでしょうか?またはIF以外の関数で必要なものがあるのでしょうか?

  • エクセル/参照したセルの移動

    エクセル2003を使っています。 シート1のセルをシート2で参照しているのですが、シート1で並び替えをすると参照元を追ってくれません。 例えばシート1に製品名と値段の表があって、シート2にある製品名●●と値段を参照したいとします。 シート1   A   B 1 ●●  2,000 2 ☆☆  3,000 シート2   A   B 1 ●● 上記のような場合、シート2のB1セルに「='シート1'!B1」と入力しました。そうするとB1セルに2,000と表示されるまでは良いのですが、シート1で並び替えをした際、●●製品が10行目に移動してしまうとシート2のB1セルには1行目に移動した他の製品の値段が出てしまいます。 シート1で並び替えをしたら、シート2でも●●製品の値段が追えるようには出来ないでしょうか? 何か良い方法があれば、教えて下さい。どうぞよろしくお願いいたします。

  • Excelセルの参照

    Excelにdataとnという2シートがあります。dataシートのA列3行目~22行目にデータが縦入力されており、以降B列、C列とデータ入力が繰り返されます。 nシートでdataシートの入力値参照のため、あらかじめdataシートの参照リンクを貼っておきたいのですが、nシートのデータは横並びであるせいか、参照リンクをうまくコピーすることができません。 dataセルのA3セルの値をnシートのD1に=data!A3と貼り付けて、W1(=data!A22)まで数式を自動コピーできないでしょうか。また、D2~W2まで=data!B3~=data!B22など参照リンクをコピーで作成できないでしょうか。 よろしくお願いいたします。 横並びに参照する必要があるのですが、

  • Excelのセルの参照について

    Excelでセルを参照するにはB3やA7などのように指定しますが、以下のような参照はできるのでしょうか? 1、任意のセルに何らかの数字が入っている状態で 2、その数字を行として参照する。 たとえばA7に3という数字が入っているとします。 そのA7の値を行番号としてB3やC3を参照する、といった具合です。 あまりうまく説明できないのですが、情報が不足していましたらまた補足します。 よろしくお願いします。

  • セルの移動量で参照したい。

     A  B C D 1  あ い う え 2 お か き く 3 け こ さ し 上のような位置関係のデータを   A  B C D  E F  G H I  J K L 1 あ い う え お か き く け こ さ し このように変換したいのですが、 E1やI1は左となりのセルが参照しているデータの1行下で3列左のセルを参照するようにしたいのです。 よろしくお願いします。

  • エクセルの参照セルがずれないようにしたい!

    エクセルの参照セルがずれないようにしたい! sheet1のC列にデータを入力しており、sheet2には A1に =IF(ISERROR(FINDB("○○",sheet1!C1,1))=FALSE,"△△","××") A2に =IF(ISERROR(FINDB("○○",sheet1!C2,1))=FALSE,"△△","××") A3に =IF(ISERROR(FINDB("○○",sheet1!C3,1))=FALSE,"△△","××") ・ ・ ・ ・ ・ ・ ・ ・ と、計算式を入れています。 sheet1で行の挿入をすると、sheet2の計算式が何故かずれてしまいます。「shhet1!C1,1のところの行番号」 これをずれないようにするにはどうしたらよいのでしょうか? =IF(ISERROR(FINDB("○○",Indirect(sheet1!C1),1))=FALSE,"△△","××")としても行番号はずれるし、期待する結果(sheet1のC列に○○という文字があればsheet2にA列に△△と表示したい。)が返ってきません。 説明が下手でわかりづらいとは思いますが、ご回答よろしくお願いします。

  • 【エクセル関数】参照するセル

    エクセル関数で教えていただきたいです。 セル参照で、参照するセルを、ある法則道理に参照していきたいのです。 例えば、シートA,シートB、とあったときに、 シートBのC3に → シートAのC3を参照、 シートBのC6に → シートAのC4を参照、 シートBのC9に → シートAのC5を参照、 シートBのC12に → シートAのC6を参照・・・・ ・・・・・・・・・・・ という風に、参照元の列は1行づつ増やしていきたいのですが、 それをシートBでは、3行ごとに表示したいのです。 自分でいろいろ試してみましたが、うまくできません。 こういったことは、関数でできるのでしょうか? もし、あれば、教えていただけると助かります。 よろしくお願いします。

  • エクセル 別の表からの参照

    上手く説明できるかわかりませんが・・・ 表(1)に住所録を作成しております。 表(2)でそのデータを反映させたいのです。 例えば表(2)のA1セルに表(1)のA1セルのデータを参照させます。 これは=[表(1).xls]A1でできます。 表(2)のA2セルに表(1)のA2セルを参照させる計算式を教えてください。 素人考えで、=[表(1).xls]A1+1でできると思ってました・・・(^^;) 次の行を指定できる計算式を!

  • excelで列に名前を付けたいのです。

    列に名前を付けたいのです。 1行目はタイトルで、A1=収入 B1=支出 C1=残高とします。 2行目からA2=100 B2=50 A3=200 B3=60・・・と数値を入れていきます。ここで、C2=A2-B2 C3=A3-B3・・・・ではなくA列に収入 B列に支出と名前を付けて、C2=収入2-支出2 C3=収入3-支出3・・・とすることはできますか? 使っているエクセルのバージョンは、2000です。 挿入→名前でやってみようと思ったのですが、見てみたけど、定義はなんとなくわかるものの、貼り付け・作成など全く意味がわからないくらいの初心者ですので、わかりやすく説明していただけるとありがたいです。 よろしくお願いします。

専門家に質問してみよう