【问题标题】:Combine filtered data from multiple worksheets to a single worksheet将多个工作表中的过滤数据合并到一个工作表中
【发布时间】:2015-11-06 02:33:31
【问题描述】:

拥有一个使用多个工作表 (15+) 的工作簿,这些工作表用于保存多行制造商数据。我们通过特定列输入所需的数量来选择要订购的商品。我们使用带有复制到选项的高级过滤将所有包含数量 > 0 的行项目移动到每个工作表中的特定区域。每个工作表的复制到范围 (P9:V3000) 都是相同的。我想编写一个 vba 宏来将每个工作表中的高级过滤数据复制并组合到名为(设备列表)的工作簿中的单独工作表中。我的挑战是只选择包含单元格下方数据的单元格(P9:V9)。 P9:V9 是标题行,下面的所有内容 (P10:V3000) 都是我要复制的数据。

以下是我使用的特定于一个工作表的代码(“Ansul 设备”)当我在下面有多个行项目时,该代码有效(P9:V9)。当我只有一个项目代码行时 "Range(Selection, Selection.End(xlDown)).Select" 选择 P10:V10 以下的每个单元格,即使它们不包含任何数据。仅选择包含数据的范围(P10:V3000)中的单元格的最佳方法是什么?如果可能,希望循环遍历每个工作表。

Sub PC_CombinedCopyTo_EquipmentList()
'Turn Off Screen Updating
Application.ScreenUpdating = False
'Clear the("Equipment List") Copy to Range via macro
Application.Run ("EquipmentList_ClearCTR")
'Set imax rows variable which will allow me to select the first blank cells below the header in the ("Equipment List") worksheet
Sheets("Equipment List").Select
iMaxRows = Cells(Rows.Count, "A").End(xlUp).Row**
'Copy Ansul ADF Equipment list
Sheets("Ansul Equipment").Select
Range("P10:V10").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Equipment List").Select
Range("A" & iMaxRows + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Application.ScreenUpdating = True
End Sub

【问题讨论】:

    标签: vba


    【解决方案1】:

    范围("P10:V10").选择

    范围(Selection, Selection.End(xlDown)).Select

    这是正常的,您选择第 10 行并转到 xlDown,因此选择会转到工作表的末尾。

    虽然我建议避免使用 Select,并编辑任何宏生成的代码以删除这个坏习惯,但我建议将此作为快速修复:

    Range("P10:V" & cells(Rows.count, "v").end(xlUp).Row).Select
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 2021-11-25
      • 2021-08-09
      • 1970-01-01
      相关资源
      最近更新 更多