BinLocation新增或更新时自动生成指定格式时间戳的实现方法
可以实现,以下是Google Sheets和Excel两款主流表格工具的具体实现方案:
方案1:Google Sheets(通过 Apps Script 实现)
- 打开目标表格,点击顶部菜单栏「扩展程序」>「Apps Script」进入脚本编辑器
- 清空编辑器内的默认代码,粘贴以下代码:
function onEdit(e) { // 按需修改为BinLocation列对应的列号,A列为1、B列为2,以此类推 const BIN_LOCATION_COL = 2; // 按需修改为存放时间戳的列对应的列号 const TIMESTAMP_COL = 3; // 跳过表头行,按需调整行数,这里默认第1行是表头 const HEADER_ROW = 1; const activeSheet = e.source.getActiveSheet(); const editedRange = e.range; // 仅处理BinLocation列、非表头行的编辑操作 if (editedRange.getColumn() !== BIN_LOCATION_COL || editedRange.getRow() === HEADER_ROW) return; const timestampCell = activeSheet.getRange(editedRange.getRow(), TIMESTAMP_COL); // 写入当前时间并设置要求的格式 timestampCell.setValue(new Date()).setNumberFormat("MM/DD/YYYY HH:MM:SS"); }
- 点击保存按钮,给项目命名后关闭脚本编辑器,刷新表格即可生效。
注意:该触发器对所有拥有表格编辑权限的用户操作生效,支持批量修改多行BinLocation内容时批量生成时间戳。
方案2:Excel(通过 VBA 实现)
- 打开目标Excel文件,按
Alt + F11调出VBA编辑器 - 在左侧工程资源管理器窗口,双击你要设置功能的工作表,打开对应代码编辑窗口
- 粘贴以下代码:
Private Sub Worksheet_Change(ByVal Target As Range) ' 按需修改为BinLocation对应的列范围,比如B列就填"B:B" Const BIN_LOCATION_COL As String = "B:B" ' 按需修改为存放时间戳的列号,A列为1、B列为2,以此类推 Const TIMESTAMP_COL As Integer = 3 ' 跳过表头行,按需调整行数,这里默认第1行是表头 Const HEADER_ROW As Integer = 1 If Not Intersect(Target, Me.Range(BIN_LOCATION_COL)) Is Nothing Then If Target.Row = HEADER_ROW Then Exit Sub ' 避免写入时间戳时再次触发事件造成循环 Application.EnableEvents = False With Me.Cells(Target.Row, TIMESTAMP_COL) .Value = Now() .NumberFormat = "MM/DD/YYYY HH:MM:SS" End With Application.EnableEvents = True End If End Sub
- 保存文件时选择「Excel 启用宏的工作簿(*.xlsm)」格式,重新打开文件后启用宏即可生效。
内容的提问来源于stack exchange,提问作者Jvang
相关产品推荐
相关产品推荐

