
Excelの再計算を防ぐ方法とは?マクロや関数を活用して値を固定する方法を解説!
Excelを使って抽選やデータ整理を行う際、再計算によって意図しない値の変化が発生することがあります。特に、RAND() や RANDBETWEEN() 関数を使った抽選では、Excelの再計算機能によって、結果が変わってしまう問題が発生することがよくあります。
本記事では、Excelの再計算を防ぐ方法について詳しく解説します。関数やVBAを活用した具体的な手法を紹介するので、用途に応じた最適な方法を選んでみてください。
Excelで再計算を防ぐ方法とは?
Excelの再計算とは、セルの値が自動的に更新される仕組みです。たとえば、以下の関数は再計算のたびに異なる値を返します。
=RAND()
→ 0以上1未満のランダムな小数を生成=RANDBETWEEN(1,10)
→ 1~10の範囲でランダムな整数を生成=TODAY()
→ シートを開くたびに現在の日付に更新
この再計算は通常便利ですが、くじ引きやルーレット機能をExcelで作成する際には不便です。たとえば、一度決定した当選者の結果が、F9キーを押したりExcelを閉じて再度開いたりすると変わってしまいます。これを防ぐための方法を5つ紹介します。
くじ引き・ルーレットの作成方法についてはこちらをご参考ください。

Excelで再計算を防ぐ5つの方法
1. 値のみ貼り付けで固定する(最も簡単な方法)
再計算を防ぐ最も簡単な方法は、「値のみ貼り付け」を使うことです。関数をそのままにしておくと再計算されてしまうため、関数の結果を「値」に変換することで固定できます。

値のみ貼り付けの手順
- 関数のあるセルを選択
- Ctrl + C(コピー)
- [右クリック] → [値の貼り付け] を選択

これで、数式が削除され、表示された値のみが保持されます。
ショートカットキーで値を貼り付ける方法
- Ctrl + C(コピー)
- Ctrl + Alt + V(形式を選択して貼り付けを開く)
- V(値)を選択してEnterキー
これにより、元の関数が削除され、固定された値のみが残ります。
メリットとデメリット
メリット
メリットとしては、一度決定した値を変更せずに固定できることです。また、誰でも比較的簡単に実行しやすいため、初心者向けの方法といえるでしょう。
デメリット
デメリットとしては一度貼り付けると、元の関数は消えてしまいます。再度利用する場合は、関数を入力し直す必要があるため、手間と感じる方もいるかもしれません。
もし、後で再利用したい場合は、エクセルの設定・機能を利用したり、VBAを使って自動で貼り付ける方法を活用しましょう。
2. 手動計算モードに切り替える
Excelのデフォルト設定では、シートの数式は「自動計算」モードになっています。しかし、これを「手動計算」モードに変更すれば、Excelが勝手に再計算を行わなくなります。
手動計算モードにする手順
- [数式] タブを開く
- [計算方法の設定] → [手動] を選択
- 必要に応じて F9キー で再計算を実行

メリットとデメリット
メリット
手動計算モードに変更した場合は、すべての関数の再計算を防げます。計算を行いたいときは、手動でF9キーを押せば更新できます。
関数を多用したために動作が重くなったエクセルファイルには有効といえるでしょう。
デメリット
デメリットとしては他の数式も計算されなくなってしまいます。
すべてのシートに影響を及ぼすため、使いどころを選ぶ必要があります。
3. 反復計算を活用する
Excelの「反復計算」機能を使うと、関数を消さずに値を固定することができます。
反復計算を有効にする手順
- [ファイル] → [オプション] → [数式]
- [計算方法の設定] → [反復計算を有効にする] にチェックを入れる
- 最大反復回数 を1に設定
関数の書き方
以下のようなIF関数を使うと、一度決定した値はそのまま維持されます。
=IF(A1=””,RAND(),A1)
これは、A1セルに値がなければRAND()を計算し、一度値が入力されたらそのまま固定するという仕組みです。
メリット
反復計算を使うと、Excelの関数を自動で繰り返して値を少しずつ変えながら計算できます。そのため、手動で何度も数式を入力し直さなくても、条件に合った値を求めることができます。
デメリット
設定を間違えると、無限に計算が続いてしまい、Excelがフリーズすることがあります。また、計算が重くなり、Excelの動作が遅くなることもあるので注意が必要です。
4. VBAで「値のみ貼り付け」を自動化する
関数をそのまま使うと再計算されるため、値のみを固定すれば再計算を防げます。ただし、手作業で「値のみ貼り付け」を行うのは面倒なので、VBAを使って自動化すると便利です。
※VBAを設定するには初期設定などの事前準備が必要です。
詳しくはこちらからご確認ください。
値を固定するVBAコード
Sub 値を固定()
Dim rng As Range Set rng = Range("B2:B11") ' 固定したい範囲を指定
rng.Value = rng.Value ' 関数を削除して値のみを保持
End Sub
このマクロを実行すると、B2:B11
の範囲にある関数が値のみに置き換わります。
ボタンを作成し、このマクロを割り当てると、クリックするだけで再計算を防げます。
↓値を固定マクロを実行する前

実行するマクロを選択し、実行ボタンを押します。

指定した場所の値が関数から実際の数値に固定されました。

実際にルーレットなどで値を固定する場合はマクロ登録したボタンを設置するなどして、簡単にマクロを実行できるようにした方が実用的でしょう。
マクロボタンの設置方法についてはこちらをご確認ください。
5. VBAで数式を復元する
「値のみ貼り付け」で固定すると関数が消えてしまうため、VBAを使って数式を復元できるようにしておくと便利です。
数式を復元するVBAコード
Sub 数式を復元()
Dim rng As Range
Set rng = Range("B2:B11") ' 数式を復元する範囲を指定
rng.Formula = "=RAND()" ' 復元したい数式を指定
End Sub
このマクロを実行すれば、数式が復活するので、再度くじ引きやルーレットを実施できます。
まとめ
Vxcelの再計算は便利ですが、場合によっては意図しないExcelの再計算は便利ですが、場合によっては意図しない更新が発生するため、防ぐ必要があります。
手動計算モード、VBA、反復計算などの方法を活用すれば、用途に応じた最適な方法を選ぶことができます。
- 簡単に防ぎたい → 値のみ貼り付け
- すべての計算を制御したい → 手動計算モード
- 関数を消さずに固定したい → 反復計算を活用
- 完全に値を固定したい → VBAで値のみ貼り付け
- 後で復元もしたい → VBAで数式を復元
用途に合わせて、最適な方法を選び、Excelの作業効率を向上させましょう!