excel - 两张纸的Vlookup
问题描述
我需要在 VBA 中为工作表“Page1_1”中的值编写 vlook up 代码,并用来自“Sheet1”列“R”17 的值填充 G 列。到目前为止,我有以下内容,但它给出了:
无法获取工作表函数类的 v 查找属性:
Function vlookupVBA()
vlookupVBA = "#N/A"
Set ws = Sheets("Page1_1")
Set sh = Sheets("Sheet1")
LastRow = ws.Cells(Rows.Count, "G").End(xlUp).Row
Set TargetRange = sh.Range("R2:G" & LastRow)
On Error Resume Next
result = Application.WorksheetFunction.VLookup(Worksheets("Page1_1").Range("G2"), TargetRange, 17, False)
End Function
解决方案
问题是您的列参考号。您要求 vlookup 从第 17 列获取数据,但您的 TargetRange 没有 17 列。
TargetRange = sh.Range("R2:G" & LastRow)
从 G 列到 R 列有 12 列。我假设您想从 Q 列中获取答案,这将是您范围的第 11 列。因此
result = Application.WorksheetFunction.VLookup(Worksheets("Page1_1").Range("G2"), TargetRange, 11, False)
应该管用。
附言。您还可以以更直观的方式重写 TargetRange:
TargetRange = sh.Range("G2:R" & LastRow)
pps。我鼓励您改用以下Index/Match
组合:Excel - VLOOKUP 与 INDEX/MATCH - 哪个更好?
推荐阅读
- java - Java - 如何确保使用 try catch 输入正确的命令行参数?
- python - 如何将数据帧的字典写入 Pandas 中的一个 excel 文件?键是工作表名称,值是数据框
- node.js - 将音频流从麦克风发送到 Google Speech - Javascript
- c# - 创建对象时的 C# 内存分配
- java - 使用 intelij 连接到远程 mysql 服务器
- javascript - 将 Google Apps Scriptlet 中的变量传递给 javascript
- angular - 角度路由不适用于直接请求/链接
- dashboard - 从 UI 重新部署节点红色仪表板
- javascript - Coderbyte 挑战:问号 - 正则表达式模式 '/d(\?\?\?)d/gi' 不正确
- ios - “无法识别的选择器发送到实例”?- 斯威夫特