Excel宏开发需求:批量生成并合并每日软件上传数据
自动合并每日上传数据的VBA宏解决方案
没问题,我帮你写一个VBA宏来搞定这个重复又繁琐的手动操作!这个宏会自动完成从填充日期数字到合并所有每日上传数据的全流程,彻底替代复制粘贴的工作。
宏的核心功能
- 自动给单元格B3依次填入1到31的日期数字
- 自动抓取对应日期生成的上传数据
- 将每日数据追加到指定的合并工作表末尾
- 完成后弹出提示,让你一目了然
完整VBA代码
Sub MergeDailyUploadData() Dim wsTarget As Worksheet Dim currentDate As Integer Dim lastRowTarget As Long Dim uploadDataRange As Range ' 替换为你用来存放合并结果的工作表名称 Set wsTarget = ThisWorkbook.Worksheets("合并上传数据") ' 可选:每次运行宏前清空目标表数据,不需要的话可以注释掉这行 wsTarget.Cells.Clear ' 遍历1到31的日期数字 For currentDate = 1 To 31 ' 给B3填入当前日期数字 ThisWorkbook.ActiveSheet.Range("B3").Value = currentDate ' 可选:如果生成上传数据需要刷新时间,调整等待时长(这里是1秒) Application.Wait Now + TimeValue("00:00:01") ' 替换为你实际的上传数据所在单元格范围 Set uploadDataRange = ThisWorkbook.ActiveSheet.Range("A5:C20") ' 找到目标表的最后一行,避免覆盖已有数据 lastRowTarget = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row ' 处理目标表为空的情况 If lastRowTarget = 1 And wsTarget.Range("A1").Value = "" Then lastRowTarget = 0 End If ' 将每日数据复制到目标表的下一行 uploadDataRange.Copy wsTarget.Cells(lastRowTarget + 1, "A") Next currentDate MsgBox "所有每日上传数据已合并完成!", vbInformation End Sub
你需要调整的几个地方
- 目标工作表名称:把代码里的
"合并上传数据"改成你实际用来存放合并结果的工作表名字 - 上传数据区域:把
"A5:C20"替换成你生成的每日上传数据所在的真实单元格范围 - 等待时间:如果你的上传数据生成不需要等待刷新,可以删掉
Application.Wait那一行;如果需要更长时间,调整TimeValue里的数值(比如"00:00:02"就是等待2秒) - 清空目标表:如果不想每次运行宏都清空之前的合并数据,把
wsTarget.Cells.Clear这一行注释掉或者直接删除
使用步骤
- 打开你的Excel文件,按下
Alt + F11打开VBA编辑器 - 在左侧项目窗口里找到你的工作簿,右键点击插入一个新的模块
- 将上面的代码粘贴到模块中
- 根据你的表格情况修改代码里的参数
- 回到Excel界面,按下
Alt + F8,选择MergeDailyUploadData宏并运行
内容的提问来源于stack exchange,提问作者malbane
相关产品推荐
相关产品推荐

