文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

VBA:按照Excel工作表中的名称列自动汇总多个工作薄中对应sheet中所需要的数据

2023-08-30 10:42

关注

需求如下:

  1. B列为产品名为合并单元格,C列为供应商名,G、H列为金额数据;
  2. 数据源放在同一个文件夹内,B列产品名来源于工作薄名称中间的字符串,C列供应商名来源于工作薄中的sheet名;
  3. G、H列金额数据来源于工作薄中sheet中固定单元格P25:Q25的数值;
  4. 根据B列产品名自动打开对应的工作薄,并按照C列供应商名对应的sheet,把P25:Q25的数据自动复制到G、H列;

VBA执行效果视频

数据自动汇总

Sub GetDataFromSourceWorkbooks()    Dim targetWorkbook As Workbook    Dim targetWorksheet As Worksheet    Dim currentSheetName As String    Dim sourceFolder As String    Dim productColumn As String    Dim supplierColumn As String    Dim amount1Column As String    Dim amount2Column As String    Dim cell As Range    Dim product As String    Dim supplier As String    Dim sourceFileName As String    Dim sourceWorkbook As Workbook    Dim sourceWorksheet As Worksheet    Dim amount1 As Double    Dim amount2 As Double        ' Replace with your specific column letters    productColumn = "B"    supplierColumn = "C"    amount1Column = "G"    amount2Column = "H"        ' Replace with your target workbook path    Set targetWorkbook = ThisWorkbook        ' Set target worksheet name    Set targetWorksheet = targetWorkbook.ActiveSheet ' 假设目标文件中的主工作表为活动工作表    'Set currentSheetName = ActiveSheet.Name    'Set targetWorksheet = targetWorkbook.Worksheets(currentSheetName)        ' Input the folder path containing the source workbooks        sourceFolder = InputBox("请输入目标文件路径:", "目标文件路径输入")    sourceFolder = sourceFolder & "\"    'sourceFolder = "C:\Users\18703\Desktop\自动化\数据\爱家影视包\"        If sourceFolder = "" Then        MsgBox "未输入目标文件路径。操作已取消。", vbExclamation        Exit Sub    End If        '禁止刷新屏幕    Application.ScreenUpdating = False            Dim firstRow As String    Dim lastRow As String    firstRow = 2 '定义数值区域开始的行数    lastRow = targetWorksheet.Cells(targetWorksheet.Rows.Count, "A").End(xlUp).Row '查找数值区域最后一行    '开始循环找对应目标工作表对应工作薄中sheet中所需要的单元格数据    For Each cell In targetWorksheet.Range(productColumn & firstRow & ":" & productColumn & lastRow)        '产品列值和供应商值        product = cell.MergeArea.Cells(1, 1).Value ' Get the value of the first cell in the merged range        supplier = cell.Offset(0, 1).Value                '数据源excel表的所有路径        sourceFileName = Dir(sourceFolder & "*" & product & "*.xls*")                '若数据源不为空或数据源不是目标工作表就打开对应的工作薄中的sheet        If sourceFileName <> "" And sourceFileName <> targetWorkbook.Name Then            Set sourceWorkbook = Workbooks.Open(sourceFolder & sourceFileName)            Set sourceWorksheet = sourceWorkbook.Worksheets(supplier)                        ' 确认所需要的数据            amount1 = sourceWorksheet.Range("P25").Value            amount2 = sourceWorksheet.Range("Q25").Value                        sourceWorkbook.Close False ' 数据源选择不保存关闭                        ' Update the target worksheet with the values from the source workbook            cell.Offset(0, 5).Value = amount1 ' Amount 1 column            cell.Offset(0, 6).Value = amount2 ' Amount 2 column        Else            cell.Offset(0, 5).Value = "Not Found" ' Amount 1 column            cell.Offset(0, 6).Value = "Not Found" ' Amount 2 column        End If    Next cell        '禁止刷新屏幕    Application.ScreenUpdating = True        MsgBox "数据获取完成,请确认!"        ' 目标工作表保存但不关闭,确认无误后可手动关闭    targetWorkbook.Save  ' Save changes        End Sub

来源地址:https://blog.csdn.net/rubyw/article/details/132554319

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯