Excelmacros提取行,取决于前几天的价值和30个项目加上一个完整的类别?
我有一个excel文件,最初通过.iqy网页查询从我们的云计算程序导入库存数据。
列标题是:
A1= Quantity B1= Item C1= Description D1= Bin Code
现在我创造了一个macros;
-
刷新数据
Range("A1").QueryTable.Refresh False
-
删除所有零库存项目
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
-
自动按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
-
保存主列表
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个项目(行)提取到新的工作簿中并保存。
这个过程必须从前几天开始,所以机制应该是这样的:
-
查看c \ stock \ sl \ Sample List -1 dd'mm'yy -1天的样本列表,查看最后一个项目的bin号码,比如说10A1,
-
取下一行的bin号码,10A2,
-
从具有10A2的第一行中select30行,
-
继续,直到箱号改变。
-
将该文件保存为Sample List dd'mm'yy in c \ stock \ sl \
-
电子邮件样本列表dd'mm'yy到NNN@NNN.com
这应该可以重复。 星期六和星期天公司也不公开,所以星期一应该回头看星期五等等,也是公共假期。
任何帮助,这将是一个救星? 我不介意如果你想改变文件名,以便解决这个问题,假期。 但是,需要为文件放置一个时间戳。
您可能希望查看Dictionary
对象 ,这可能有助于完成此任务。 如果您有任何问题,请提出另一个问题。 不知道是否有人想给你一个更彻底的答案这个问题。
你的项目可能足够大,你也想和class级一起工作 。
请避免您的代码中的每个Select
。
例如,
Range("A1:D1").Select Selection.AutoFilter
可以replace为:
Range("A1:D1").AutoFilter