• ベストアンサー

エクセルの数式、関数でコピーはできるか

エクセルで、たとえば、 A1、A2,A3セルを使って A1セルの値が順次変化していく場合、変化する前の古い値をA2、A3セルに保存しておきたいのです。 プログラム的に書くと、 IF A1が変化したとき THEN A3=A2 A2=変化する前のA1 ENDIF みたいなことをしたいのです、VBAを使ってマクロで作るのは簡単ですが、 できれば、マクロは使わず、ワークシート上だけで、関数や数式だけで作ることはできませんか たとえば、=IF( A1<>A2, COPY A2 TO A3 ) みたいなある条件があったときにコピーできるようなことが出来れば可能だと思うのですが

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

  • ベストアンサー
  • kichi8000
  • ベストアンサー率41% (660/1584)
回答No.2

確かに関数のみでは無理です。 しかし、オプションで1回以上反復計算をさせると循環参照をつかって値を保持できます。 A2=IF(A5=A1,A2,A5) A3=IF(A6=A2,A3,A6) 計算セル A5=IF(A2=A5,A1,A5) A6=IF(A3=A6,A2,A6)

chachakabu
質問者

お礼

ありがとうございました。 循環参照ですか。 これは興味がありますね。いろいろ調べてみますね。 トリガーで動くような関数さえあれば、デジタル回路のフリップフロップみたいなものも作れるのですけどね。

その他の回答 (4)

  • kichi8000
  • ベストアンサー率41% (660/1584)
回答No.5

#4がなぜ説教しているのか不明ですが、ワークシート関数をVBAでユーザー定義することができるということでしょう。 あくまで標準ワークシート関数では無理と言うことです。

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

#3です。 わたしはエクセルの関数(の範囲内では)では出来ないといっている。 VBAを勉強すれば出来る。 エクセルで関数というのは、VBAでいう場合の関数とか、他言語の関数とは一線を画すものである。 そのエクセルでのワークシート関数では出来ないといっている。 >ワークシート上で別のセルが変化したら自分のセルに他のセルの値をコピーする、という機能は、エクセルを作る立場で考えれば簡単に実装できることです。 当たり前。MSの設計者はエクセルの関数に、ここまで、という枠をはめているのだ。 エクセルの関数を色々勉強すれば、それが見えてくるのだ。設計のレベルの人ならできるというのは、理由や回答にならない。

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

初心者は、よくこの手のことを夢想するようだが、関数では原理的に出来ない。 VBAが出来るならイベントでも使ってやれば出来る。 エクセル(表計算ソフト)では人間が入力するセル位置をヅラして入力して、そういうことを実現する仕組みなのはエクセルを使い始めたら、すぐ判るだろう。

chachakabu
質問者

お礼

単純に、あるセルの変化をトリガーとして、あるセルの値を変える、ということが出来るかどうかだけなのですけどね。 それを関数と呼ぶかどうかという話はおいといて。 ワークシート上で別のセルが変化したら自分のセルに他のセルの値をコピーする、という機能は、エクセルを作る立場で考えれば簡単に実装できることです。 残念ながら、そういった機能はない、ということですね、

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

Excel の関数は、その関数が設定されているセルだけに、 その時の状況に対応した、ただひとつの値を返すことしかしません。 従って、ご質問者さまの要望に合う(他のセルに影響を及ぼすような)処理は、実現できません。  また、関数ではその瞬間の状態に応じた内容を返すので、 ご質問に書かれているような、順次処理(A3の内容を変更してから、A2の内容を変更する) (A2の内容を変更してから、A1の内容を変更する)は関数では実現できません。

chachakabu
質問者

お礼

ありがとうございました。 わかりました。

関連するQ&A