【发布时间】:2015-04-16 23:02:30
【问题描述】:
问题:
我有一个包含 3 张工作表的工作簿,每张名为“HeatNumbers”、“HeatSheetTemplate”和“Heat vs Order”。 Heat vs Order 表每天都会添加许多新的数据行,因此行数总是在变化。这是列标题和一些数据的图片:
我在寻找什么:
在 HeatNumbers 表上,我有一个执行一些 VBA 代码的按钮。这是该表的图片:
这就是我需要做的事情:用户将在多行的 J 列的黑框中输入数据。每行可以包含一个 FO#。单击该按钮时,我需要按该黑框区域中的任何 FO# 过滤上面的 Heat vs Order 表上的所有数据,将该结果集复制到 HeatNumbers 表,从第 2 行 col A 开始,然后删除Heat vs Order 表中的过滤器。
我尝试过的:
我能够做到这一点的唯一方法是让用户手动过滤 Heat vs. Order 表上的数据,然后将结果复制并粘贴到 HeatNumbers 选项卡。不幸的是,这很麻烦而且容易出错。
这是使用宏记录器生成的代码:
Sub Filter_FO()
'
' Filter_FO Macro
'
Range("A1:H20000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= Sheets("HeatNumbers").Range("J4:J22"), Unique:=False
ActiveWindow.SmallScroll Down:=-15
Range("A4:H300").Select
Selection.Copy
Sheets("HeatNumbers").Select
ActiveWindow.SmallScroll Down:=-15
Range("A2:H300").Select
ActiveSheet.Paste
End Sub
【问题讨论】:
-
现在运行宏时发生了什么?你能显示你的宏吗?
-
这是一个您可以录制宏并非常接近最终结果的地方。您将需要使用
AutoFilter并将其输入该用户输入的值。 (也有助于在粘贴图片时包含列标签)。 -
@Jaycal 现在运行的宏对需要过来的数据进行排序,然后从 SQL 表中导入一些数据。该代码运行良好。
-
@ByronWall 这是个好建议。我想这就是我要走的路。我什至没有想到。对这张照片感到抱歉。发帖后才看到。应该已经编辑了。
-
@ByronWall 不幸的是,这在使用自动过滤器和录制宏时不起作用。当我选择整个区域作为过滤条件,但该区域只有一两条数据时,它不会过滤。