微信扫码
添加专属顾问
我要投稿
利用DeepSeek和VBA自动化Excel数据处理,提高工作效率。 核心内容: 1. Excel数据处理的自动化需求与挑战 2. DeepSeek在解决Excel自动化问题中的应用 3. 使用VBA代码实现DeepSeek解决方案的过程与结果
Sub GenerateCommissionSheets()Dim srcWB As Workbook, newWB As WorkbookAs WorksheetAs LongDim matchedRows As New CollectionWorksheetcolIndex As VariantSet srcWB = ThisWorkbook ' 假设代码在当前工作簿运行Set infoSheet = srcWB.Sheets("信息总表")Set templateSheet = srcWB.Sheets("委托单")获取用户输入的使用单位= InputBox("请输入要筛选的使用单位名称:", "输入筛选条件")If criteria = "" Then Exit Sub在信息总表中查找匹配行With infoSheet= .Cells(.Rows.Count, "A").End(xlUp).RowFor i = 2 To lastRow ' 假设第1行为标题行= criteria Then matchedRows.Add iNext iEnd WithIf matchedRows.Count = 0 ThenvbInformationExit SubEnd If创建新工作簿Set newWB = Workbooks.Add= FalseWhile newWB.Sheets.Count > 1newWB.Sheets(1).DeleteWend= True为每个匹配行创建委托单For Each Item In matchedRowsBefore:=newWB.Sheets(1)Set targetSheet = newWB.Sheets(1)With targetSheet= "委托单" & newWB.Sheets.Count查找所有自动获取单元格For Each cell In .UsedRangeThen= cell.Offset(0, -1)= Application.Match(leftCell.Value, infoSheet.Rows(1), 0)Then= infoSheet.Cells(Item, colIndex).ValueElse= "数据未找到"End IfEnd IfNext cellEnd WithNext Item删除初始空白表并整理工作簿newWB.Sheets(1).DeletenewWB.Sheets(1).Activate:=Environ("USERPROFILE") & "\Desktop\" & criteria & "委托单.xlsx"vbInformationEnd Sub
Sub GenerateCommissionSheetsPlus()Dim srcWB As Workbook, newWB As WorkbookAs WorksheetAs LongDim matchedRows As New CollectionDim Item As VariantWorksheetcolIndex As VariantSet srcWB = ThisWorkbook ' 假设代码在当前工作簿运行Set infoSheet = srcWB.Sheets("信息总表")Set templateSheet = srcWB.Sheets("委托单")获取用户输入的使用单位= InputBox("请输入要筛选的使用单位名称:", "输入筛选条件")If criteria = "" Then Exit Sub在信息总表中查找匹配行With infoSheet= .Cells(.Rows.Count, "A").End(xlUp).RowFor i = 2 To lastRow ' 假设第1行为标题行= criteria Then matchedRows.Add iNext iEnd WithIf matchedRows.Count = 0 ThenvbInformationExit SubEnd If创建新工作簿Set newWB = Workbooks.Add= FalseWhile newWB.Sheets.Count > 1newWB.Sheets(1).DeleteWend= True为每个匹配行创建委托单For Each Item In matchedRowsafter:=newWB.Sheets(Worksheets.Count)= newWB.Sheets(Worksheets.Count)With targetSheet= "委托单" & newWB.Sheets.Count - 1查找所有自动获取单元格For Each cell In .UsedRangeThen= cell.Offset(0, -1)= Application.Match(leftCell.Value, infoSheet.Rows(1), 0)Then= infoSheet.Cells(Item, colIndex).ValueElse= "数据未找到"End IfEnd IfNext cellEnd WithNext Item删除初始空白表并整理工作簿newWB.Sheets(1).DeletenewWB.Sheets(1).Activate:=Environ("USERPROFILE") & "\Desktop\" & criteria & "委托单.xlsx"vbInformationEnd Sub
Sub GenerateCommissionSheets()Dim srcWB As Workbook, newWB As WorkbookAs WorksheetAs LongDim matchedRows As New CollectionWorksheetcolIndex As VariantDim rowNum As Variant ' 声明循环变量Set srcWB = ThisWorkbookSet infoSheet = srcWB.Sheets("信息总表")Set templateSheet = srcWB.Sheets("委托单")= InputBox("请输入要筛选的使用单位名称:", "输入筛选条件")If criteria = "" Then Exit Sub查找匹配行(优化空值处理)With infoSheet= .Cells(.Rows.Count, "A").End(xlUp).RowFor i = 2 To lastRow= criteria ThenmatchedRows.Add iEnd IfNext iEnd WithIf matchedRows.Count = 0 ThenvbInformationExit SubEnd If创建新工作簿(增加错误处理)On Error Resume NextSet newWB = Workbooks.Add= FalseDo While newWB.Sheets.Count > 1newWB.Sheets(1).DeleteLoop= True生成委托单(优化命名逻辑)For Each rowNum In matchedRowsBefore:=newWB.Sheets(1)Set targetSheet = newWB.Sheets(1)With targetSheet= Left("委托单_" & criteria, 25) & "_" & (newWB.Sheets.Count - 1)增强字段匹配逻辑For Each cell In .UsedRange> 0 Then= cell.Offset(0, -1)= Application.Match(Trim(leftCell.Value), infoSheet.Rows(1), 0)Then处理日期格式IsDate(infoSheet.Cells(rowNum, colIndex).Value) Then= Format(infoSheet.Cells(rowNum, colIndex).Value, "yyyy-mm-dd")Else= infoSheet.Cells(rowNum, colIndex).ValueEnd IfElse= "字段匹配失败"End IfEnd IfNext cellEnd WithNext rowNum保存优化(处理特殊字符)newWB.Sheets(1).DeletenewWB.Sheets(1).ActivateFilename:=Environ("USERPROFILE") & "\Desktop\" & _"-") & "委托单.xlsx", _FileFormat:=xlOpenXMLWorkbookvbInformationEnd Sub
Sub GenerateCommissionSheetsPlus()Dim srcWB As Workbook, newWB As WorkbookAs WorksheetAs LongDim matchedRows As New CollectionDim Item As VariantWorksheetcolIndex As VariantSet srcWB = ThisWorkbook ' 假设代码在当前工作簿运行Set infoSheet = srcWB.Sheets("信息总表")Set templateSheet = srcWB.Sheets("委托单")获取用户输入的使用单位= InputBox("请输入要筛选的使用单位名称:", "输入筛选条件")If criteria = "" Then Exit Sub在信息总表中查找匹配行With infoSheet= .Cells(.Rows.Count, "A").End(xlUp).RowFor i = 2 To lastRow ' 假设第1行为标题行= criteria Then matchedRows.Add iNext iEnd WithIf matchedRows.Count = 0 ThenvbInformationExit SubEnd If创建新工作簿Set newWB = Workbooks.Add= FalseWhile newWB.Sheets.Count > 1newWB.Sheets(1).DeleteWend= True为每个匹配行创建委托单For Each Item In matchedRowsafter:=newWB.Sheets(Worksheets.Count)= newWB.Sheets(Worksheets.Count)With targetSheet= "委托单" & newWB.Sheets.Count - 1查找所有自动获取单元格For Each cell In .UsedRangeThenSet leftCell = cell.Offset(0, -1)colIndex = Application.Match(leftCell.Value, infoSheet.Rows(1), 0)If Not IsError(colIndex) Thencell.Value = infoSheet.Cells(Item, colIndex).ValueElse= "数据未找到"End IfEnd IfNext cellEnd WithNext Item删除初始空白表并整理工作簿newWB.Sheets(1).DeletenewWB.Sheets(1).ActivatevbInformation:=ThisWorkbook.Path & "\" & criteria & "委托单.xlsx"SaveChanges:=TrueEnd Sub
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-08-26
2025-08-24
2025-09-22
2025-08-17
2025-08-06
2025-08-20
2025-10-21
2025-08-19
2025-09-30
2025-10-16