我有一个主文件,用于监控我公司的出货进度。我每周更新一次,包括现有货物的进度(已存在于主文件中的货物)和输入的新货物。这些更新以更新表的形式出现,其格式与主文件相同。我已经自动输入新的货物,但我仍然坚持如何更新现有的货运进度。
目前,我根据货件参考号手动执行vlookup。这很痛苦,因为有多个出货进度列,我必须遍历每个新输入以删除vlookup公式。
FOR EXAMPlE:货件参考在“C”栏中,货件提取在“AG”栏中,发货的货物在“AH”栏中,货物到达在“AI”栏中......依此类推。在主表中我可能有参考编号和取件日期。更新表可能包含此货件的发货日期。我想把发货日期复制到这批货的主文件中。
我基本上想要在主文件的每一列中搜索空白,并根据货件参考从更新文件中复制此数据。我无法复制和浏览主文件数据,因为我在上周手动添加了大量数据,更新后的文件可能没有或同意。
感谢您的帮助
请参阅我的尝试代码:
Sub Eupdatedates()
Dim lr As Long, rw As Long, extRNG As Range
Set wb = Workbooks("masterfile.xlsm")
Set ws = wb.Sheets("RawDATA")
lastRow = ws.Range("B" & ws.Rows.Count).End(xlUp).Row
Set extRNG = Workbooks("updatefile.csv").Worksheets("report").Range("C:AL")
For i = 33 To 38 ' columns which contain dates that need updating
ws.Range("$A$2:$CV$" & lastRow).AutoFilter field:=i, Criteria1:="=" 'filter out cells containing data
lastRow = ws.Range("B" & ws.Rows.Count).End(xlUp).Row ' find last row after filtering
firstRow = Range("Cells(2,i): Column(i)" & Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row ' indentify first row after filtering
For rw = firstRow To lastRow ' loop through each each empty row cell and perform a vlookup to the update file
Cells(rw, i) = Application.VLookup(Cells(rw, i), extRNG, i - 2, False)
Next rw
Next i
End Sub
我收到错误“Range(”Cells(2,i):Column(i)“我想我已经在线查看,似乎找不到在for循环中定义范围的方法。我是新的对VBA来说有很多理由可以弥补。任何想法都会非常感激!!
答案 0 :(得分:0)
这是VBA的工作。我过去做过类似的事情并使用VBA来完成任务,但如果没有工作簿放在我面前,我就无法编写代码。作为指针,我通常从一张大纸张开始,然后在开始编码之前以逻辑步骤写出过程,例如。