image

中的错误VLOOKUP,COUNTIF,SUMIF等功能称为工作表功能。通常,在Excel中预定义并准备在工作表上使用的功能是工作表功能。您无法在VBA中更改或查看这些功能背后的代码。

另一方面,用户定义的功能和特定于VBA的功能(例如MsgBox或InputBox)是VBA功能。

我们都知道如何在VBA中使用VBA功能。但是,如果我们想在VBA中使用VLOOKUP,该怎么办?我们该怎么做?在本文中,我们将对此进行确切的探讨。

在VBA中使用工作表函数

image

要访问工作表函数,我们使用Application类。几乎所有工作表函数都列在Application.Worksheet Function类中。并使用点运算符,您可以全部访问它们。

在任何子目录中,编写Application.Worksheet函数。并开始编写函数的名称。 VBA的智能感知将显示可用功能的名称。选择函数名称后,它将要求变量,就像excel上的任何函数一样。但是您将必须以VBA可理解的格式传递变量。例如,如果要传递范围A1:A10,则必须将其作为Range对象(如Range(“ A1:A10”))传递。

因此,让我们使用一些工作表功能来更好地理解它。

如何在VBA中使用VLOOKUP函数

image

为了演示如何在VBA中使用VLOOKUP函数,这里有示例数据。我需要使用VBA在消息框中显示给定登录ID的名称和城市。数据分布在范围A1:K26中。

按ALT + F11打开VBE并插入模块。

请参见下面的代码。

Sub WsFuncitons()



Dim loginID As String

Dim name, city As String



loginID = "AHKJ_1-3357042451"



'Using VLOOKUP function to get name of given id in table

name = Application.WorksheetFunction.VLookup(loginID, Range("A1:K26"), 2, 0)



'Using VLOOKUP function to get city of given id in table

city = Application.WorksheetFunction.VLookup(loginID, Range("A1:K26"), 4, 0)



MsgBox ("Name: " & name & vbLf & "City: " & city)



End Sub

运行此代码时,将得到此结果。

image

您可以看到VBA将结果打印到消息框中的速度。现在让我们检查一下代码。

如何运作?

1.

Dim loginID作为字符串Dim名称,城市作为String首先,我们声明了两个字符串类型的变量来存储VLOOKUP函数返回的结果。我使用了字符串类型的变量,因为我确定VLOOKUP返回的结果将是一个字符串值。如果您的工作表函数期望返回数字,日期,范围等值的类型,请使用该类型的变量来存储结果。如果您不确定工作表函数将返回哪种类型的值,请使用变量类型变量。

2。

loginID =“ AHKJ_1-3357042451”

接下来,我们使用loginID变量存储查找值。在这里,我们使用了硬编码的值。您也可以使用引用。例如。

您可以使用Range(“ A2”)。Value从范围A2动态更新查找值。

3.

名称= Application.WorksheetFunction.VLookup(loginID,Range(“ A1:K26”),2,0)

在这里我们使用VLOOKUP函数来获取。现在,当您右键单击该函数并打开括号时,它将为您显示所需的参数,但描述性不如Excel中所示。你自己看。

image

您需要记住如何以及如何使用什么变量。您始终可以返回工作表以查看描述性变量的详细信息。

在这里,查找值为Arg1。对于Arg1,我们使用loginID。查找表是Arg2。对于Arg2,我们使用Range(“ A1:K26”)。请注意,我们没有像在Excel中那样直接使用A2:K26。列索引为Arg3。

对于Arg3,我们使用2,因为名称在第二列中。查找类型为Arg4。我们使用0作为Arg4。

城市= Application.WorksheetFunction.VLookup(loginID,Range(“ A1:K26”),4,0)

同样,我们得到城市名称。

4.

MsgBox(“名称:”和名称&vbLf和“城市:”和城市)

最后,我们使用Messagebox打印名称和城市。

为什么在VBA中使用工作表功能?工作表函数具有巨大的计算能力,并且忽略工作表函数的能力并不明智。例如,如果我们想要数据集的标准偏差,并且您想要为此编写完整的代码,则可能要花费几个小时。但是,如果您知道如何在VBA中使用工作表函数STDEV.P来一次性获得计算结果。
Sub GetStdDev()

std = Application.WorksheetFunction.StDev_P(Range("A1:K26"))

End Sub

image

使用多个工作表功能VBA

假设我们需要使用索引匹配来检索一些值。现在您将如何在VBA中修改公式。我猜这是你会写的:

Sub IndMtch()

Val = Application.WorksheetFunction.Index(result_range, _

Application.WorksheetFunction.Match(lookup_value, _

lookup_range, match_type))

End Sub

这没错,但是很长。使用多种功能的正确方法是使用With块。请参见以下示例:

Sub IndMtch()

With Application.WorksheetFunction

Val = .Index(result_range, .Match(lookup_value, lookup_range, match_type))

val2 = .VLookup(arg1, arg2, arg3)

val4 = .StDev_P(numbers)

End With

End Sub

image

如您所见,我已经使用With块来告诉VBA,我将使用Application.WorksheetFunction的属性和函数。因此,我不需要到处都定义它。我只是使用点运算符来访问INDEX,MATCH,VLOOKUP和STDEV.P函数。使用End With语句后,如果不使用完全限定的函数名称,就无法访​​问函数。

因此,如果必须在VBA中使用多个工作表功能,请与block一起使用。

并非所有的工作表功能都可以通过Application.WorksheetFunction获得,某些工作表功能可以直接在VBA中使用。您不需要使用Application.WorksheetFunction对象。

例如,诸如Len()之类的函数可用于获取字符串中的字符数,左,右,中间,修剪,偏移量等。这些函数可直接在VBA中使用。这是一个例子。

Sub GetLen()

Strng = "Hello"

Debug.Print (Len(strng))

End Sub

image

看到,这里我们使用了LEN函数,而不使用Application.WorksheetFunction对象。

同样,您可以使用其他功能,如左,右,中,字符等。

Sub GetLen()



Strng = "Hello"

Debug.Print (Len(strng))

Debug.Print (left(strng,2))

Debug.Print (right(strng,1))

Debug.Print (Mid(strng, 3, 2))

End Sub

When you run the above sub, it will return:

5

He

o

ll

希望本文有关如何在Excel中的VBA中使用VLOOKUP之类的工作表功能的文章具有解释性。在此处查找有关VBA公式和相关Excel公式的更多文章。如果您喜欢我们的博客,请在Facebook上与您的朋友分享。您也可以在Twitter和Facebook上关注我们。我们希望收到您的来信,请让我们知道我们如何改进,补充或创新我们的工作,并为您做得更好。写信给我们[email protected]

相关文章:

link:/ excel-macros-and-vba-什么是CSng函数在Excel-vba中[什么是Excel VBA中的CSng函数]:SCng函数是一个VBA函数,它将任何数据类型转换为单精度浮点数(“假设它是一个数字”)。我主要使用CSng函数将文本格式的数字转换为实际数字。

如何通过Microsoft Excel中的VBA反向获取文本和数字文本,我们在VBA中使用循环和中间函数。 1234将转换为4321,“ you”将转换为“ uoy”。这是代码段。

在Microsoft Excel中使用VBA用自定义数字格式格式化数据:更改数字excel中特定列的格式使用此VBA代码段。一键将指定格式转换为指定格式。

`link:/ tips-using-worksheet-change-event-to-run-macro-when-any-change-made [在进行任何更改时使用工作表更改事件来运行宏]]:因此,运行宏每当工作表更新时,我们都会使用VBA的工作表事件。

`link:/ events-in-vba-run-macro-if-any-change-made-on-sheet-range [如果在指定范围内对工作表进行了任何更改,则运行宏]:当值在指定范围内更改时,请使用此VBA代码。它检测到在指定范围内所做的任何更改,并将触发该事件。

最简单的VBA代码突出显示当前使用的行和列:使用此小VBA代码段突出显示工作表的当前行和列。

热门文章:

如何在Excel中使用IF函数:Excel中的IF语句检查条件,如果条件为TRUE,则返回一个特定值,如果为FALSE,则返回另一个特定值。

`link:/ formulas-and-functions-introduction-vlookup-function [如何在Excel中使用VLOOKUP函数]’:这是excel中最常用和最受欢迎的函数之一,用于从不同范围查找值和床单。

如何在Excel中使用SUMIF函数:这是另一个仪表板必需的功能。这可以帮助您汇总特定条件下的值。

如何在Excel中使用COUNTIF函数:使用此惊人的函数对带有条件的值进行计数。您无需过滤数据即可计算特定值。 Countif功能对于准备仪表板至关重要。