如何实现Excel检测单元格首次编辑并标记不可编辑的固定日期
无需宏实现首次编辑日期自动记录方案
核心思路
靠Excel的迭代计算功能,让A列只在B/C列第一次填内容时生成日期,之后不管B/C怎么改,A列的日期都保持不变,同时锁死A列不让手动编辑。
操作步骤
开启迭代计算
- 点击「文件」→「选项」→「公式」
- 勾选「启用迭代计算」,将「最多迭代次数」设为1(避免无限循环)
- 点击确定保存设置
设置A列公式
- 选中A2单元格,输入公式:
若只需要日期不需要精确时间,把=IF(OR(B2<>"",C2<>""),IF(A2="",NOW(),A2),"")NOW()换成TODAY()即可。
逻辑说明:只要B2或C2有内容,且A2为空时,就生成当前时间/日期;后续A2已有值后,不管B/C列怎么修改,公式都会直接返回A2的原始值,不再更新。
- 选中A2单元格,输入公式:
锁定A列禁止手动编辑
- 点击表格左上角的全选按钮(行号列标的交叉处),右键选择「设置单元格格式」→「保护」,取消勾选「锁定」
- 单独选中A列,右键「设置单元格格式」→「保护」,勾选「锁定」
- 切换到「审阅」选项卡,点击「保护工作表」,可设置保护密码(可选),在允许的操作中仅保留「选定未锁定的单元格」,确保用户只能编辑B、C列
原理说明
开启迭代计算后,公式仅在A2为空且B/C列有内容时执行一次日期生成;当A2已有值后,公式会直接返回自身的原始值,不会再触发NOW()或TODAY()的刷新,彻底解决之前用单独NOW()函数自动更新的问题。
注意事项
- 所有使用该共享表格的用户都需要开启迭代计算功能,否则公式无法正常生效,建议提前同步操作步骤;
- 若设置了工作表保护密码,需告知负责表格管理的人员,避免后续无法解锁修改。
内容的提问来源于stack exchange,提问作者Antara Reis
相关产品推荐
相关产品推荐

