让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。
如果答案让您满意,请采纳、点赞、关注,非常感谢!
.
每日一句正能量,让它带给您好心情:用心做好每一件小事,就是在为大事铺路。
.
根据您的需求,我为您编写一个WPS宏解决方案。这个宏将帮助您从多个预算表中提取数据并汇总到"汇总1"工作表中。
解决方案
1. 创建汇总表
首先确保您有一个名为"汇总1"的工作簿,其中包含一个名为"Sheet1"的工作表。
2. VBA宏代码
在"汇总1"工作簿中创建以下宏:
Sub 汇总数据()
Dim 源工作簿 As Workbook
Dim 目标工作簿 As Workbook
Dim 源工作表 As Worksheet
Dim 目标工作表 As Worksheet
Dim 下一行 As Long
Dim 单元格地址 As Variant
Dim i As Integer
' 设置目标工作簿和工作表
Set 目标工作簿 = ThisWorkbook
Set 目标工作表 = 目标工作簿.Sheets("Sheet1")
' 获取下一空行
下一行 = 目标工作表.Cells(目标工作表.Rows.Count, "B").End(xlUp).Row + 1
If 下一行 < 2 Then 下一行 = 2
' 检查是否有打开的工作簿
If Workbooks.Count < 2 Then
MsgBox "请先打开要汇总的预算表文件!", vbExclamation
Exit Sub
End If
' 设置源工作簿(当前活动工作簿)
Set 源工作簿 = ActiveWorkbook
' 检查源工作簿名称是否包含"预算"
If InStr(源工作簿.Name, "预算") = 0 Then
MsgBox "当前活动工作簿名称不包含'预算',请确认是否正确的预算表文件!", vbExclamation
Exit Sub
End If
On Error GoTo 错误处理
' 设置源工作表
Set 源工作表 = 源工作簿.Sheets("综合信息")
' 定义要提取的单元格地址
单元格地址 = Array("E22", "G2", "F19", "G20", "G21", "F7", "F8", "F9", "F13")
' 提取数据并填入目标表
For i = 0 To UBound(单元格地址)
' 将公式结果转换为值
目标工作表.Cells(下一行, i + 2).Value = 源工作表.Range(单元格地址(i)).Value
Next i
' 可选:在A列添加源文件名称
目标工作表.Cells(下一行, 1).Value = 源工作簿.Name
MsgBox "数据汇总完成!数据已添加到汇总表的第 " & 下一行 & " 行。", vbInformation
Exit Sub
错误处理:
MsgBox "处理过程中出现错误:" & Err.Description & vbCrLf & _
"请确认:1. 存在名为'综合信息'的工作表" & vbCrLf & _
"2. 所有指定的单元格都存在且包含数据", vbCritical
End Sub
3. 创建命令按钮
在"汇总1"工作簿的Sheet1中创建命令按钮:
- 打开"汇总1"工作簿
- 进入"开发工具"选项卡
- 如果没有看到"开发工具"选项卡,需要在WPS设置中启用:
- 文件 → 选项 → 自定义功能区 → 勾选"开发工具"
- 在"开发工具"选项卡中,点击"插入" → "按钮(窗体控件)"
- 在工作表中拖动绘制按钮
- 在弹出的"指定宏"对话框中,选择"汇总数据"宏
- 将按钮文字修改为"汇总数据"
4. 使用方法
- 打开"汇总1"工作簿
- 打开要汇总的预算表(如"预算1")
- 切换到"汇总1"工作簿
- 点击"汇总数据"按钮
- 数据会自动提取并添加到汇总表中
- 关闭当前预算表,打开下一个预算表,重复步骤3-5
注意事项
- 文件名兼容性:代码会检查文件名是否包含"预算",所以"预算-20230815模板"这样的文件名是可以正常工作的。
- 数据格式:代码会将公式结果转换为实际数值,确保数据稳定性。
- 错误处理:如果找不到"综合信息"工作表或指定的单元格,会显示错误提示。
- 行号自动识别:代码会自动找到下一空行,无需手动指定行号。
如果遇到问题
如果运行时仍然出现错误,请检查:
- WPS宏安全性设置:需要启用宏
- 确保所有预算表都有名为"综合信息"的工作表
- 确保所有指定的单元格地址都存在
这个解决方案应该能满足您的需求,让您按时完成工作并准时休息!