Excel VBA VLookup在表格第二列上

试图看看是否有可能在表的第二列使用VLookup? 我已经无休止地搜寻,无法find答案,但我觉得这应该是可能的。

我会补充一点,VBA不是我的强项。 我来自PHP / MySQL的背景,但没有使用在我的工作,所以我诉诸学习VBA豪华。

我的代码到目前为止(简化):

Dim userEnviron As String Dim rowId As Integer rowId = 0 userEnviron = Environ("Username") Dim tbladmin As ListObject Set tbladmin = Sheets("Office Details").ListObjects("officeAdmin") On Error Resume Next rowId = Application.VLookup(userEnviron , Range(tbladmin), 4, False) 

此代码正在查找用户环境variables,并在tbldadmin表中查找匹配项。 这个表格是这样构造的:

Name UserID Email RowID Tom Smith Tom the@the.com 2

我试图查找用户名和返回名称,但是现在我有代码设置来查找名称并返回RowID(我已经添加了第二个代码段取RowID并返回名称)

我可以看到很多非VBA的例子,但是没有一个使用表格。

VLookup可以像描述的那样使用,在第二列search匹配并从第一列返回值? 如果只有我可以search第二栏,我会从最后一栏回来。

如果你想要VLOOKUP但你的数据不在最左边的列中,你可以使用INDEX / MATCH来指定你正在查找的数据的位置以及你想要返回的数据。 尝试这个:

 rowId = WorksheetFunction.INDEX(Range("officeAdmin[RowID]"), WorksheetFunction.MATCH(userEnviron, Range("officeAdmin[UserID]"), 0)) 

您可以更改Range("officeAdmin[RowID]") ,以查找哪个列,例如Range("officeAdmin[Name]")将返回Name而不是RowID

您可以直接Offset您要查找的范围:

 Dim userEnviron As String Dim rowId As Integer rowId = 0 userEnviron = Environ("Username") Dim tbladmin As ListObject Set tbladmin = Sheets("Office Details").ListObjects("officeAdmin") On Error Resume Next rowId = Application.VLookup(userEnviron, tbladmin.Range.Offset(0, 1), 3, False)