【问题标题】:How to extract specific range within excel worksheets and consolidate如何在excel工作表中提取特定范围并合并
【发布时间】:2021-07-27 02:44:06
【问题描述】:

我正在尝试在 excel 中自动执行报告任务,我需要将文件夹中的所有工作簿合并到一个工作表中,我遵循了 danwagner 提供的指南:https://danwagner.co/how-to-combine-multiple-excel-workbooks-into-one-worksheet-with-vba/

它工作得很好,但是由于数据的非结构化性质,我没有得到想要的结果。

基本上,我希望 excel 宏只获取特定范围的值,我正在定义上排和列数,但不知道如何让 excel 严格复制/提取每个工作表中的表格(每个工作簿的表格的起始行和列数相同,但表格的底行不同)。

我需要从每个工作簿中抓取的表格看起来像这样,每个工作簿中只有一个工作表要合并在一起:

任何提示将不胜感激,顺便说一句,我认为需要对指南中的宏的这些行进行编辑,但我一直遇到错误:

        lngSrcLastCol = LastOccupiedColNum(wksSrc)
        With wksSrc
            Set rngSrc = .Range(.Cells(1, 1), .Cells(lngSrcLastRow, _
                                                     lngSrcLastCol))
        End With

【问题讨论】:

  • 每个工作表中的第一个单元格是否相同?如果是这样,你可以例如对第一个(以及所有其他)执行Set rngSrc = .Range("A5").CurrentRegion,另外对剩余的工作表使用Set rngSrc = rngSrc.Resize(rngSrc.Rows.Count - 1).Offset(1)

标签: excel vba


【解决方案1】:

我知道这不是您想要的答案,但也许 PowerQuery 在这里会更好用?

如果您愿意,可以尝试以下方法:

  1. 打开一个新工作簿

  2. 转到数据功能区

  3. 选择“获取数据”->“从文件”->“从文件夹”

  4. 导航到存放您的文件的文件夹

  5. 当提示时选择'转换数据'

  6. 如有必要,将过滤器设置为仅抓取您想要的文件

  7. 在最左侧的[内容]列中,点击带有两个向下箭头的图标

  8. 选择您的表格/标签并点击'确定'如果您的工作簿中存在多个表格或选项卡,系统将提示您选择导航到您选择的表格/选项卡,我喜欢单击“跳过有错误的文件”复选框,但这取决于你

  9. 您现在将应用一系列步骤来获取您想要的数据,在您的情况和您的示例中,我将按照以下几行进行操作:

  10. '删除行' -> '删除顶部行' -> 行数 = 4

  11. '使用第一行作为标题'确保首先删除了最上面的行

  12. [Column2] 上的“过滤器”以删除空值假设第 2 列在您的目标详细信息下方的行中永远不会有文本,并且它始终具有与您的数据拉取所需的最后一行匹配的数据

  13. 现在您应该拥有您的数据,根据您可能想要执行的任何格式需求或其他过滤器进行您可能想要的任何其他编辑

  14. 选择“关闭并加载”所有文件都将应用相同的逻辑步骤并将最终结果构建到一个表中

【讨论】:

  • 不幸的是,我需要 VBA 驱动的解决方案,因为我必须随着时间的推移快速重新创建此报告,但我很感激这个建议!
猜你喜欢
  • 2022-12-04
  • 1970-01-01
  • 1970-01-01
  • 2018-08-13
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
  • 2013-07-07
相关资源
最近更新 更多