excel - 每周报告的完整vlookup
问题描述
我完成了一份每周报告,您可以在其中针对几个不同的报告运行多个 vlookup。我希望能够选择文件来运行 vlookup,因为它会每周更改。以下是我到目前为止所拥有的,但我不断收到运行时错误,当它运行时,它会为每一行查找相同的值。最后,我是 VBA 的初学者,所以如果我犯了一些新手错误,我提前道歉。
Sub VlookOne()
Dim filenm As Variant
Dim MyBook1 As Workbook
Dim MyBook2 As Workbook
Dim myTableArray
Dim rowcnt
Dim beginrow
Dim lastrow
beginrow = 4
lastrow = 200
Set MyBook1 = ThisWorkbook
filenm = Application.GetOpenFilename
'the workbook im trying to run the vlookup against
Set MyBook2 = Workbooks.Open(filenm)
With MyBook2
Set myTableArray = MyBook2.Worksheets("Sheet1").Range("A4:M300")
End With
For rowcnt = beginrow To lastrow
MyBook1.Activate
Range("M4").Select
ActiveCell.Value = Application.VLookup(Range("A4"), myTableArray, 13, False)
ActiveCell.Offset(1, 0).Select
Next rowcnt
End Sub
解决方案
您应该完全限定您的范围引用以避免隐式的活动表引用。删除您的 ActiveCell 和 .Select/.Activate 行,因为它们会增加开销并减慢您的代码。使用您的行变量来引用循环中的当前行并避免像当前那样覆盖:
With MyBook1.Worksheets("Sheet1") '<==change as required
For rowcnt = beginrow To lastRow
.Cells(RowCount, "M") = Application.VLookup(.Cells(RowCount, "A"), myTableArray, 13, False)
Next rowcnt
End With
如果找不到查找匹配,您可能还想添加错误处理。
推荐阅读
- flutter - 如何监听 ChangeNotifier 内平面对象属性的变化?
- reactjs - 当我在反应中单击取消按钮时,为什么页面正在重新加载以及为什么它的路径也在反应中改变?
- javascript - 如何以特定格式从当前日期增加日期?
- python - 如何删除下面python代码中的括号?
- flutter - Flutter IOS 通知的 FCM 在应用程序处于后台或终止时不显示
- python - 更改 DataFrame 的所有行中的日期
- django - 使用 djcelery 时间表时芹菜节拍失败
- hdfs - 气流 HdfsSensor 操作员不工作
- java - docker swarm 集群中耗时的任务恢复
- scikit-learn - 带有逻辑回归的 sklearn RFE