『数式の結果がTRUEなら今日の日付を入れたい』(Will)
こんにちは。
進捗表を作成しています。
数式がA1セルに以下のように入っています。
=IF(COUNTBLANK(B1:I1)=0,TODAY(),"")
B1〜I1セルがすべて埋まったらその日付をA1セルに入れたいのですが、
TODAY関数は揮発性のため翌日見れば翌日の日付になっています。
B1〜I1セルがすべて埋まった日をA1に入れる方法は
ないでしょうか?マクロはなしで、数式ではできないでしょうか?
< 使用 Excel:Excel2021、使用 OS:Windows11 >
B1セルからI1セルがいったん埋まった後に範囲内のセルがクリアされたら日付を消す必要はありますか? (ねむねむ) 2026/05/21(木) 16:29:11
マクロ(VBA)を使わず、数式だけで「条件を満たしたときの日付を固定する」には、 Excelの「反復計算(循環参照)」という機能を利用する裏ワザがあります。
通常、自分自身のセルを参照する数式(A1セルの中でA1を参照する)はエラーになりますが、 設定を変更することで「すでにA1に日付が入っていればそれを維持し、 入っていなければ今日の日付を入れる」という処理が可能になります。
以下の手順と数式を試してみてください。
---
### ステップ1:Excelの設定を変更する(必須)
この設定を行わないとエラー(循環参照)になります。
1. Excelの画面左上にある **「ファイル」** タブをクリックします。 2. 左下の **「オプション」** を選択します。 3. オプション画面の左メニューから **「数式」** を選択します。 4. **「計算方法の設定」** グループにある **「反復計算を有効にする」** にチェックを入れます。 * ※「最大反復回数」は初期値の「100」のままで構いません。 5. **「OK」** を押して閉じます。
---
### ステップ2:A1セルに数式を入力する
A1セルに以下の数式を入力します。 =IF(COUNTBLANK(B1:I1)=0, IF(A1="", TODAY(), A1), "")
### 数式の解説
* COUNTBLANK(B1:I1)=0` のとき(すべて埋まったとき)、さらに内側の `IF(A1="", TODAY(), A1)` が実行されます。 * A1が空っぽなら、今日の日付(TODAY)を入れる。すでに日付(A1自身)が入っていれば、 その日付をそのままキープする」 という動きをするため、翌日になっても日付が更新されなくなります。 * B1:I1のどこか1つでも空欄になると、一番外側のIF文によって ""(空欄)に戻ります。
---
### 注意点(導入前にご確認ください)
この方法は非常に便利ですが、数式特有の注意点が2つあります。
1. **セルの書式設定を「日付」にする** 数式を入れた直後、日付ではなく「46161」のような数字(シリアル値)が表示されることがあります。 その場合は、A1セルの書式設定を「標準」から「日付」に変更してください。 2. **他のブック(ファイル)への影響** 「反復計算を有効にする」という設定は、Excel全体(アプリ自体の設定)に保存されます。 そのため、このファイルを開いている間は、他のファイルでも循環参照のエラーが出なくなります。 チームで共有する場合は、他のメンバーのExcelでも「反復計算を有効にする」にチェックを入れてもらう必要があります。
(じぇみに) 2026/05/21(木) 16:40:11
ねむねむさま
B1セルからI1セルがいったん埋まった後に範囲内のセルがクリアされたら日付を消す必要はありますか? → はい。基本的に削除はないのですが、誤って記入した場合のみ削除する可能性があります。
その場合は日付も削除が必要です。
じぇみにさま
難しそうですが、試してみます。
(Will) 2026/05/22(金) 09:01:28
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.