解決済み

あるセル内の計算結果を固定数値として違うセルに代入する方法

  • 困ってます
  • 質問No.4051106
  • 閲覧数543
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 79% (74/93)

あるセルで計算した結果を違うセルの位置に固定数値として代入する方法はあるのでしょうか?
例えば、A1のセルに変数Xが入っており、B1のセルに変数Yが入っていたとします。
そしてC1のセルで、ある計算をしていたとします。
で、X=Yの条件を満たした時はC1のセルの計算結果の数値をセルD1に数値として自動で代入するという作業をやらせたいのです。

試しに適当なセルに、=IF(A1=B1,D1=C1,0)なんて式を作ってみましたが、当然のようにD1=C1なんて表現はできないのでエラーとなります。
D1のセルに=IF(A1=B1,C1,0)と入れれば、A1=B1の条件を満たした時だけはD1のセルにC1の計算結果が入りますが、D1のセル内が数値でなくあくまで条件式である以上、条件が変わればエクセル上のD1のセルの表示も変わってしまいます。あくまでC1の計算結果の数値をそのままD1に数値のデータとして入力させて記憶させておきたいのですが。
どうやったらいいのでしょうか?

D1のセルに=C1と入れておけば、D1のセルにはC1の計算結果が常に表示されるわけですが、C1の計算自体が他のセルのデータによってその都度変動するため、D1も同じように変動してしまいます。
ですので、A1=B1を満たした時のC1の計算結果をD1に記憶させておくという作業をしたいわけなんです。

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

  • 回答No.2

ベストアンサー率 48% (1930/4007)

VBAでやってみました。

1.該当のシートのタブを右クリックし、「コードの表示」を選択。
2.出てきたVisualBasicEditor(白い部分)に下記のコードをコピペ。

'*****ここから下をコピペ*****

Private Sub Worksheet_Calculate()
If Range("A1").Value = Range("B1").Value Then
Range("D1").Value = Range("C1").Value
End If
End Sub

'*****ここより上までをコピペ*****

3.AltキーとF11キーを同時に押してワークシートへもどります。

これでご要望にかなうでしょうか。
お礼コメント
kwsp777

お礼率 79% (74/93)

ありがとうございます。
見事にできました!
タイミングはうまく取れないので、コマンドボタンで自分で押して
実行させることにしました。
今まで、手入力で作業していたものがボタンを1クリックで終える
ことができるようになり、大変楽になりました。
本当にありがとうございました。
投稿日時 - 2008-05-27 01:52:29

その他の回答 (全1件)

  • 回答No.1
残念ながらワークシート関数では不可能です。
マクロ(VBA)ならできるでしょうが...
それにしてもタイミングが難しそう...
お礼コメント
kwsp777

お礼率 79% (74/93)

やっぱりワークシート上では無理だったんですね。
VBAを覚えると、エクセルでできることの幅は全然広がるのでしょうし、自分も覚えたいなと思ってきました。
タイミングはおっしゃるとおり、難しかったのでボタンで処理しました。
全てを自動実行とはいきませんでしたが、大分作業が楽になりました。
投稿日時 - 2008-05-27 01:54:41
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ