首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在VLOOKUP中使用IFERROR

在VLOOKUP中使用IFERROR
EN

Stack Overflow用户
提问于 2021-03-06 23:59:03
回答 2查看 65关注 0票数 2

我正在通过使用iferror和vlookup的VBA将一个公式添加到电子表格中。下面是来自VBA的代码

代码语言:javascript
运行
复制
 LastRow = Cells(Rows.Count, 1).End(xlUp).Row
 Range("O2:o" & LastRow).FormulaR1C1 = "=IFERROR(VLOOKUP(RC1,'Controls'!a:b,2,FALSE),""Missing"")" 

但是当我回头查看电子表格时,我在单元格中发现了以下公式

代码语言:javascript
运行
复制
  =IFERROR(VLOOKUP($A2,Controls!A:(B),2,FALSE),"Missing")   

这总是导致值"Missing“。当我在工作表中编辑公式并从查找范围中的B中删除括号时,通过在控件工作表中找到值来正确解析公式。

我已经尝试将查找范围从A:B更改为A1:B500、$A$1:$B$500和$A:$B,还尝试将其拆分并使用各种连接。

我的问题是。如何让VBA不在查找范围内添加B周围的括号。

EN

回答 2

Stack Overflow用户

发布于 2021-03-07 00:22:53

您的问题源于您将常规地址(A:B)放入R1C1公式中。即使您的查找范围在另一个工作表中,Excel也希望地址采用R1C1表示法。你的公式应该是这样的

代码语言:javascript
运行
复制
dim formula as string
formula = "=IFERROR(VLOOKUP(RC1,Controls!C[-14]:C[-13],2,FALSE),""Missing"")"
Range("O2:o" & LastRow).FormulaR1C1 = formula 

由于这非常难看,我建议您为range Controls!A:B定义一个名称。然后,您可以简单地将公式更改为

代码语言:javascript
运行
复制
formula = "=IFERROR(VLOOKUP(RC1,MyControls,FALSE),""Missing"")"
票数 2
EN

Stack Overflow用户

发布于 2021-03-07 00:26:57

我认为您需要使用.Formula(...)而不是.FormulaR1C1(...),并像...A:B...一样在字符串中使用大写字母

否则,您可以执行以下操作:

代码语言:javascript
运行
复制
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("O2:o" & LastRow).FormulaR1C1 = "=IFERROR(VLOOKUP(RC1,'Controls'!a:b,2,FALSE),""Missing"")"
Dim cell As Range
For Each cell in Range("O2:O" & LastRow)
    cell.Formula = Replace(cell.Formula, "(B)","B")
Next cell
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66507680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档