在表格内保存数据:一键将Sheet1已确认工单数据转移至Sheet2
工单数据自动转移实现方案(Excel/Google Sheets)
一、Excel环境下的VBA宏实现(推荐)
这是最适配一键自动化需求的方案,步骤如下:
1. 基础配置
- 假设Sheet1的工单数据(含计算好的overhead、利润)存放在A2:O2(覆盖十余项字段),复选框控件名称为
CheckBox1(右键复选框→「指定宏」可确认名称)。 - Sheet2用于存储已确认工单,新工单自动追加到现有数据的下一行。
2. 编写VBA宏代码
按Alt+F11打开VBA编辑器,右键当前工作簿→「插入」→「模块」,粘贴以下代码:
Sub TransferWorkOrder() Dim wsSource As Worksheet, wsTarget As Worksheet Set wsSource = ThisWorkbook.Sheets("Sheet1") Set wsTarget = ThisWorkbook.Sheets("Sheet2") ' 检查复选框状态 If wsSource.CheckBox1.Value = True Then ' 定位Sheet2的最后空行 Dim lastRow As Long lastRow = wsTarget.Cells(wsTarget.Rows.Count, 1).End(xlUp).Row + 1 ' 复制工单数据到目标行 wsSource.Range("A2:O2").Copy Destination:=wsTarget.Cells(lastRow, 1) ' 可选:清空Sheet1录入区域、重置复选框 wsSource.Range("A2:N2").ClearContents ' 保留计算字段的公式 wsSource.CheckBox1.Value = False MsgBox "工单已成功转移至Sheet2", vbInformation Else MsgBox "请先勾选确认工单已接受", vbExclamation End If End Sub
3. 绑定一键触发方式
- 复选框触发:右键Sheet1的复选框→「指定宏」,选择
TransferWorkOrder,勾选复选框即可自动执行转移。 - 按钮触发:在Sheet1插入「表单控件按钮」,指定宏为
TransferWorkOrder,点击按钮完成操作。
二、Google Sheets环境下的Apps Script实现
如果使用在线表格,采用以下方案:
1. 编写脚本
打开Google Sheets,点击「扩展程序」→「Apps Script」,粘贴代码:
function transferWorkOrder() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const wsSource = ss.getSheetByName("Sheet1"); const wsTarget = ss.getSheetByName("Sheet2"); // 假设复选框在P2单元格,可根据实际位置修改 const isAccepted = wsSource.getRange("P2").getValue(); if (isAccepted) { const data = wsSource.getRange("A2:O2").getValues(); wsTarget.appendRow(data[0]); // 清空录入区域、重置复选框 wsSource.getRange("A2:N2").clearContent(); wsSource.getRange("P2").setValue(false); SpreadsheetApp.getUi().alert("工单已成功转移至Sheet2"); } else { SpreadsheetApp.getUi().alert("请先勾选确认工单已接受"); } }
2. 添加触发按钮
在Sheet1点击「插入」→「绘图」,绘制一个按钮(如“确认并转移”),右键绘图→「分配脚本」,输入transferWorkOrder,点击即可一键触发。
注意事项
- 代码中的单元格范围(如
A2:O2)需匹配你实际的工单字段位置。 - Excel中启用宏后,工作簿需保存为
.xlsm格式。
内容的提问来源于stack exchange,提问作者rfcomm2k
相关产品推荐
相关产品推荐

