Excelmacros提取行,取决于前几天的价值和30个项目加上一个完整的类别?

我有一个excel文件,最初通过.iqy网页查询从我们的云计算程序导入库存数据。

列标题是:

A1= Quantity B1= Item C1= Description D1= Bin Code 

现在我创造了一个macros;

  1. 刷新数据

      Range("A1").QueryTable.Refresh False 
  2. 删除所有零库存项目

      Dim intRow Dim intLastRow intLastRow = Range("A65536").End(xlUp).Row For intRow = intLastRow To 1 Step -1 Rows(intRow).Select If Cells(intRow, 1).Value = 0 Or Cells(intRow, 1) = "" Then Cells(intRow, 1).Select Selection.EntireRow.Delete End If Next intRow 
  3. 自动按Bin码sorting

      Range("A1:D1").Select Selection.AutoFilter Range("A2").Select Range("A1:D1668").Sort Key1:=Range("D1"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 
  4. 保存主列表

      Dim sFileName As String, sPath As String sPath = "C:\stock\ms\Master List " sFileName = Format(Now(), "dd'mm'yy") ActiveWorkbook.SaveAs (sPath & sFileName) 

现在这是棘手的一点,

每天至less30件物品需要检查,但垃圾箱不能不完整! 因此,一旦select了30个项目,脚本需要检查下一个项目是否与第30个项目在同一个仓位中,并将其包括在提取中。 因此,可以说项目30在仓库10A2中,还有项目31,32,33,34,因此总共需要将34个项目(行)提取到新的工作簿中并保存。

这个过程必须从前几天开始,所以机制应该是这样的:

  1. 查看c \ stock \ sl \ Sample List -1 dd'mm'yy -1天的样本列表,查看最后一个项目的bin号码,比如说10A1,

  2. 取下一行的bin号码,10A2,

  3. 从具有10A2的第一行中select30行,

  4. 继续,直到箱号改变。

  5. 将该文件保存为Sample List dd'mm'yy in c \ stock \ sl \

  6. 电子邮件样本列表dd'mm'yy到NNN@NNN.com

这应该可以重复。 星期六和星期天公司也不公开,所以星期一应该回头看星期五等等,也是公共假期。

任何帮助,这将是一个救星? 我不介意如果你想改变文件名,以便解决这个问题,假期。 但是,需要为文件放置一个时间戳。

您可能希望查看Dictionary对象 ,这可能有助于完成此任务。 如果您有任何问题,请提出另一个问题。 不知道是否有人想给你一个更彻底的答案这个问题。

你的项目可能足够大,你也想和class级一起工作 。

请避免您的代码中的每个Select

例如,

 Range("A1:D1").Select Selection.AutoFilter 

可以replace为:

 Range("A1:D1").AutoFilter