【问题标题】:Index Function in VBA Code [closed]VBA代码中的索引函数[关闭]
【发布时间】:2025-12-07 15:50:02
【问题描述】:

谁能帮助我在 VBA 中转换此代码。 可以通过工作表功能来做到这一点。 抱歉,我是菜鸟,刚刚学习。

=INDEX($L$1:$Z$4,4,MATCH(AQ$2,$L$1:$Z$1,0))

【问题讨论】:

  • 查看worksheet.evaluate

标签: excel vba indexing


【解决方案1】:

类似于以下内容(或使用评估),但找不到此句柄。

Sub TEST()

Dim wb As Workbook
Dim ws As Worksheet

Set wb = ThisWorkbook
Set ws = wb.Worksheets("Sheet1") ' change

Dim indexRange As Range
Set indexRange = ws.Range("$L$1:$Z$4")

Dim matchRange As Range
Set matchRange = ws.Range("$L$1:$Z$1")
Dim searchValue As Variant

searchValue = ws.Range("AQ$2").Value2

Dim result As Variant

On Error GoTo errHand
result = Application.WorksheetFunction.Index(indexRange, 4, Application.WorksheetFunction.Match(searchValue, matchRange, 0))

MsgBox result

Exit Sub

errHand:

If Err.Number <> 0 Then
    MsgBox "Value not found"
End If

End Sub

编辑:

或者按照@ScottCraner:简化

result = Application.WorksheetFunction.Index(indexRange, 4, Application.WorksheetFunction.Match(searchValue, matchRange, 0))

result = indexRange.Cells(4,Application.WorksheetFunction.Match(searchValue, matchRange, 0))

【讨论】:

  • The Craner 什么也得不到。我删除了关于他们选择范围的评论。
【解决方案2】:

简单!

MsgBox Evaluate("=INDEX($L$1:$Z$4,4,MATCH(AQ$2,$L$1:$Z$1,0))")

更多信息:

【讨论】:

  • 您将需要使用Worksheets("Sheet2").Evaluate 否则它将评估活动工作表上的公式。