Excelの数式が計算されない。手動は開いたブック全部に効く

2026-09-22Excelの使い方
再計算の設定を読むスクリプト(Python)をダウンロード

無料・登録不要 / 4KB / 版 1.0 / Python 3.9以降、openpyxl

値を変えても式の結果が変わらないときは、計算方法が手動になっている。厄介なのは、この設定がブック1つのものではなく、開いているExcel全体に効くことだ。

手動で保存したブックを先に開くと、そのあと開いた自動のブックまで手動になった。自動で保存したはずのブックで値を変えても、式が動かない。

計算されないときに見る順番。式が文字で見えているか、値が古いままか、0が出るかで分かれる

以下の結果は、Microsoft 365のExcel(バージョン16)で実際に作って確かめたものだ。確認日は2026年9月22日。Windows 11で確かめている。

手動計算は、開いたExcel全体に効く

2つのブックを作った。片方は計算方法を手動にして保存し、もう片方は自動のまま保存する。自動のほうにはA1を10倍する式が入っている。

新しいExcelで手動のブックを先に開くと、設定は手動になった。そのまま自動のブックを開いても、手動のままだった。

その状態で自動のブックのA1を1から7に変えると、式のセルは10のまま動かない。本当は70になるはずだ。

設定はブックごとではなく、Excelの1つの窓の中で共通になる。だから朝いちばんに開いたブックが手動だと、その日に開く全部のブックが手動で動く。自分が作ったブックだけ見ていると原因が見つからない。

直し方は、数式タブの計算方法の設定で自動にする。そのあと、手動で保存されていたブックを自動にし直して保存する。しないと次に開いたときに同じことが起きる。

F9を押せばその場では計算されるが、設定は手動のままだ。押して直ったように見えても、次に値を変えるとまた止まる。

F9とShift+F9は、動く範囲が違う

手動のまま計算し直す方法は3つあって、届く範囲が違う。2枚のシートに20行ずつ式を置いて数えた。

シートだけを計算すると、開いていたシート1の20行だけが新しい値になり、シート2は0行のままだった。Shift+F9にあたる。

F9にあたる計算をすると、シート1もシート2も20行とも新しくなった。ブックの中で値が変わったところを全部見る。

さらに強制的に全部を計算し直す方法もある。今回は同じ20行と20行で、結果は変わらなかった。式を書き換えていないので、計算し直す必要のあるセルが増えなかったためだ。

ふだんはF9でよい。どうしても合わないときだけ、全部強制に計算する方法を使う。そのかわり時間がかかる。

文字列の列に入れた式は、表示形式を戻しても直らない

表示形式を文字列にした列に、100行ぶんの式を入れた。

100行とも文字列のまま残った。セルには=$A1*10という文字が出る。計算はされない。

その列の表示形式を標準に戻して計算し直しても、100行とも文字列のままだった。表示形式は次に入力するときの扱いを決めるだけで、すでに入っている中身は変えない。

区切り位置をかけると0行になった。B列を選んで、データタブの区切り位置を開き、そのまま完了を押す。100行とも数値になり、B1に10が出た。

検査用のブックにスクリプトをかけた結果。OFFSETが200か所、TODAYとNOWが50か所ずつ、文字列で入った数式が30個

1つか2つなら、そのセルでF2を押してEnterでも直る。100行あるなら区切り位置のほうが早い。日付が文字列になるときと同じ直し方で、まとめて型を入れ直す。

先頭にアポストロフィが付いていると文字になる

もう1つ、見た目で区別しにくいものがある。

式の前にアポストロフィを付けて入れると、そのセルは文字列になる。数式バーには=$A$1*2と出て、セルにも同じものが出る。アポストロフィは画面に出ない。

他所から貼ったデータや、テキストから取り込んだ表で混ざる。表示形式は標準のままなので、書式を見ても分からない。

見分けるには、そのセルを選んでISNUMBERやISTEXTで型を見る。文字列と返れば、アポストロフィか文字列の書式のどちらかだ。どちらも区切り位置で直る。

循環参照は0を返す。反復計算をONにすると意味のない数が入る

A2に=$A$1+$A$3、A3に=$A$2+1と入れた。互いに参照している。

計算するとA2が10、A3が0になった。Excelは循環しているセルを0として扱い、そこで止める。数式タブのエラーチェックから循環参照を開くと、該当するセルの番地が出る。確かめるとA2と出た。

反復計算をONにして計算し直すと、A2が4399、A3が4400になった。この数に意味はない。繰り返しの回数を100回に指定したので、そこまで足し続けた途中の数が残っただけだ。

反復計算は、答えが1つに決まる式のために使うものだ。利息を含む計算のように、繰り返すと値が収束するものに使う。今回のように足し続ける式では、回数を変えるたびに答えが変わる。

循環参照があるのに反復計算がONだと、エラーも警告も出ない。数字が入っているので気づかない。このほうが0が出るより危ない。

数式の表示がONだと、シート全体が式のまま見える

セルに式が文字で見えているとき、原因は2つに分かれる。

そのセルだけなら文字列の書式かアポストロフィだ。シート全体で式が見えているなら、数式の表示がONになっている。

確かめると、ふつうのときはB1に6と出て、数式の表示をONにすると=$A$1*2と出た。値は変わっていない。見せ方が変わっただけだ。

CtrlキーとShiftキーと@を一緒に押すと切り替わる。意図せず押してしまうことがある。数式タブの数式の表示を押すと戻る。

シート全体か1つのセルか。ここを最初に見ると、どちらの原因かがすぐ分かる。

設定を読むスクリプト

計算方法と反復計算の設定は、ファイルの中に書かれている。開かずに読むスクリプトを置いた。

python calc-check.py ブック.xlsx

わざと設定を崩した3枚のブックにかけると、こう出る。

ブック全体
  計算方法 手動
  開いたときに全部計算し直す する
  反復計算 ON

日付を使う表  数式 100 / 文字列で入った数式らしきもの 0
文字列になった表  数式 0 / 文字列で入った数式らしきもの 30
明細  数式 400 / 文字列で入った数式らしきもの 0

再計算のたびに動く関数
  OFFSET       200 か所
  TODAY        50 か所
  NOW          50 か所

見るところ
  計算方法が手動になっている。開いたExcel全体がこの設定になる
  反復計算がONになっている。循環参照があっても止まらず、途中の数が入る
  文字列になった表 に文字列のまま入った数式が 30 個ある
  再計算のたびに動く関数が 300 か所ある。入力のたびに全部計算し直す

文字列で入った数式らしきものは、文字として保存されていて先頭がイコールのセルを数えている。30個と出た数は、さっき作った30行と合う。

再計算のたびに動く関数も数えている。TODAY、NOW、RAND、OFFSET、INDIRECTなどは、どこかのセルを1つ触るだけで全部が計算し直される。数が多いとブックが重くなる。

受け取ったブックにかけると、手動のまま渡されていないかが分かる。開く前に分かるのが利点で、開いてしまうとその時点で自分のExcelも手動になる。

ブックが重いときに中を数えるスクリプトと組み合わせると、配る前の点検が一通り終わる。

見る順番

最初に、式が文字で見えているかを見る。見えているならシート全体か1つのセルかを分ける。全体なら数式の表示、1つなら文字列の書式かアポストロフィだ。

値は出ているのに古いままなら、計算方法が手動になっている。数式タブの計算方法の設定を見る。

0が出ていて理由が分からないなら、循環参照を疑う。数式タブのエラーチェックから循環参照を開く。

どれにも当たらないなら、参照先が別のブックになっていないかを見る。閉じたブックを参照している式は、開くまで前の値のままになる。ここは確かめていない。

印刷の設定を読むスクリプトと同じで、配る前に機械で一通り見る形にしておくと、受け取った人に聞かれてから探す手間が減る。

確かめていないこと

別のブックを参照している式の動きは確かめていない。参照先を閉じたままだと値が更新されない、という話があるが試していない。

アドインやマクロが計算方法を変える場合も確認していない。開いた瞬間に手動になるアドインがあるという話を見かけるが、再現していない。

Web版のExcelとGoogleスプレッドシートでも試していない。計算方法の持ち方が違う。

動作確認: Microsoft 365のExcel(バージョン16) / Windows 11 / 2026-09-22確認

Excel再計算循環参照スクリプト検算