首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用IF语句将VLOOKUP函数应用于范围

使用IF语句将VLOOKUP函数应用于范围
EN

Stack Overflow用户
提问于 2015-06-03 13:27:13
回答 2查看 2.9K关注 0票数 0

我正在尝试编写一个VBA代码,它将与这个excel函数对一定范围的单元格等效。

代码语言:javascript
代码运行次数:0
运行
复制
=if(A1="", "", vlookup(A1, K1:M2000, 3, false))

我想将此应用于范围(A1:A15),并使用VBA在范围(B1:B15)中插入函数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-03 16:16:47

不知道为什么要这样做,但是可以使用下面的代码在VBA中轻松地实现这个函数。实际上,上面的函数在工作簿中会更快、更有效率,而不是制作下面的功能,但这是可能的。

现在,使用下面的函数应该可以在单元格B1的文件中工作。然后复制并粘贴通过B2:B15。

=定制(A1,$K$1:$M$2000,3,FALSE)

注意,最后两个参数设置为3,默认情况下为false,因此=customVLOOKUP(A1,$K$1:$M$2000)将给出与上面相同的结果。

代码语言:javascript
代码运行次数:0
运行
复制
Function customVLOOKUP(lookup As Range, lookupRng As Range, Optional lookupCol As Integer = 3, Optional lookupType As Boolean = False) As Variant

' check to see if lookup value is empty string
' if so return empty string to function and exit
' otherwise, evaluate normal vlookup function
If lookup.Value = "" Then

    customVLOOKUP = ""
    Exit Function

Else

    customVLOOKUP = Application.WorksheetFunction.VLookup(lookup.Value2, lookupRng, lookupCol, lookupType)

End If

End Function
票数 0
EN

Stack Overflow用户

发布于 2015-06-05 22:14:58

如果您希望将该公式放入B1:B15中,并使所有A列引用随着公式的填充而调整,则不需要遍历单元格。将公式放入B1:B15单元格中,对A列的引用将自动调整。

代码语言:javascript
代码运行次数:0
运行
复制
with activesheet   '<-reference this worksheet properly!
    with .range("B1:B15")
        ' use this one
        .formula = "=if(len(A1), iferror(vlookup(A1, K:M, 3, false), """"), """")"
        ' or this one
        .formulaR1C1 = "=if(len(RC[-1]), iferror(vlookup(A1, C11:C13, 3, false), """"), """")"
    end with
end with

请注意,来自原始公式的每对双引号都需要加倍,因为它们是引号在引用的字符串中。我添加了一个IFERROR函数来处理非匹配,并将对A1的检查从"“更改为”LEN函数“,以简化公式中的双引号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30621508

复制
相关文章

相似问题

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