筑业小筑老师铂金专家
2026-03-16 15:16:53
在表格中实现日期自动跟随填写,通常有两种需求场景:**动态更新日期**和**固定记录日期**。以下是针对不同软件(Excel、Google Sheets)的解决方案:
---
### **一、Excel 中的实现方法**
#### **1. 动态更新日期(随系统日期变化)**
使用 `TODAY()` 或 `NOW()` 函数:
- `=TODAY()` → 返回当前日期(自动每日更新)
- `=NOW()` → 返回当前日期和时间(自动更新)
**示例:**
- 在单元格 B2 输入 `=TODAY()`,B2 会始终显示当天日期。
#### **2. 固定记录日期(输入内容后日期不再变更)**
需使用 **VBA 脚本**,在单元格内容变化时自动填入当前日期。
**步骤:**
1. **打开 VBA 编辑器**:按 `Alt + F11`。
2. **插入代码**:双击工作表名称(如 `Sheet1`),粘贴以下代码:
```vba Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("A:A")) Is Nothing Then '监控 A 列的变化 Application.EnableEvents = False
Target.Offset(0, 1).Value = Date ' 在右侧相邻单元格(B列)写入日期 Target.Offset(0, 1).NumberFormat = "yyyy-mm-dd" ' 设置日期格式 Application.EnableEvents = True End If End Sub ``` - 修改 `Range("A:A")` 可监控指定列(如改为 `Range("C:C")`)。
- `Target.Offset(0, 1)` 表示右侧相邻单元格,可根据需求调整偏移量。
3. **保存文件**:必须保存为 `.xlsm`(启用宏的工作簿)。
**效果:**当在 A 列输入内容时,B 列自动填入当前日期并固定。
---
### **二、Google Sheets 中的实现方法**
#### **1. 动态更新日期**
使用 `TODAY()` 或 `NOW()` 函数,与 Excel 相同。
#### **2. 固定记录日期**
需使用 **Google Apps Script** 创建时间戳。
**步骤:**
1. **打开脚本编辑器**:点击菜单栏 `扩展程序 → Apps Script`。
2. **粘贴代码**:
```javascript function onEdit(e) {
const sheet = e.source.getActiveSheet();
const range = e.range;
const col = range.getColumn();
const row = range.getRow();
// 监控 A 列的变化(col=1)
if (col === 1 && range.getValue() !== "") {
sheet.getRange(row, 2).setValue(new Date()).setNumberFormat("yyyy-MM-dd");
}
}
```
- 修改 `col === 1` 可监控指定列(如改为 `col === 3` 监控 C 列)。
- `sheet.getRange(row, 2)` 表示在 B 列写入日期,可根据需求调整列号。
3. **保存并授权**:点击保存图标,按提示授权脚本运行。
**效果:** 当在 A 列输入内容时,B 列自动填入当前日期并固定。
---
### **三、日期自动计算的场景**
若需根据其他单元格计算日期(如截止日期 = 开始日期 + 天数):
- **Excel/Google Sheets 公式**:
```excel
=B2 + 30 // 在 B2 为开始日期时,返回 30 天后的日期
```
---
### **注意事项**
1. **Excel VBA**:需启用宏,且文件保存为 `.xlsm` 格式。
2. **Google Sheets**:脚本首次运行需授权,且时区设置为用户本地时区(可在 `文件 → 设置` 中检查)。
3. **性能**:频繁使用脚本可能略微影响大型表格的响应速度。
根据需求选择合适的方法,即可实现日期的自动跟随填写。
点赞0
回复 0
举报