Excel INDEX + MATCH(具有用户定义功能的不同工作表)

时间:2019-02-27 07:17:21

标签: excel indexing match vlookup excel-indirect

已解决,我犯了一个“ MATCH”错误,谢谢大家!

我每次都有不确定的工作表,名称也不确定,但是我要搜索的目标工作表始终是倒数第三名

所以在VBA中,我做了这个UDF:

Function SHEETNAME() As String

    Dim L As Long
    L = ThisWorkbook.Worksheets.Count
    SHEETNAME = Sheets(L - 2).Name

End Function

因此,在电子表格中调用= SHEETNAME()将始终返回目标工作表的名称

然后,不幸的是,我需要的确切值比VLookup(第3列)可以达到的值低1行

=VLOOKUP($K$2,INDIRECT("'" & sheetname() & "'!"&"A2:X30"), 3, 0) <--- I need 1 row below this result

所以我将公式转换为INDEX + MATCH

=INDEX(INDIRECT("'" & sheetname() & "'!" & "A2:X30"),MATCH($K$2,INDIRECT("'" & sheetname() & "'!" & "A2:A30"),0)+1,3)

不知何故,F9中的MATCH($ K $ 2,INDIRECT(“'”&sheetname()&“'!”&“ A2:A30”),0)的结果为N / A,为什么。...

1 个答案:

答案 0 :(得分:1)

在A:X中,您需要VLOOKUP中的第三列的值,以便它是INDEX(C:C,...)或INDEX(A:X,...,3)。 VLOOKUP始终使用第一列进行查找,因此将成为MATCH(K2,A:A,0)。

=INDEX(INDIRECT("'" & sheetname() & "'!A2:X30"), MATCH($K$2, INDIRECT("'" & sheetname() & "'!A2:A30"), 0)+1, 3)

不要将$的INDIRECT字符串复杂化。什么也不会改变字符串。