我已经看到几个问题围绕在VBA中的多个标准使用INDEX MATCH
,但它们似乎都围绕着将公式粘贴到单元格中。
我正在通过ListObject
循环并尝试在差异表上查找3个条件,但我希望粘贴到单元格中的值不是公式。我尝试使用Application.Index
,Application.WorksheetFunction.Index
,Application.Match
,Application.WorksheetFunction.Match
和Evaluate()
的各种组合,但我仍然得到#Value!
(当我没有得到错误)。我在下面尝试过的一些内容(这是我正在犯的一个非常简单的错误)。
wsSrc
作为ListObject
的一部分具有以下范围,我想将结果粘贴到wsDest
上。
rngDate = Range("Table24[date]") 'Date
rngFrom = Range("Table24[from]") 'String
rngTo = Range("Table24[to]") 'String
rngLookup = Range("Table24[lookup]") 'Double
基于Date,From和To的组合我想在rngLookup
中查找值。
我试过了:
Application.Index(rngLookup.Address, _
Application.Match(strDate & "USD" & strTo, _
rngDate.Address & rngFrom.Address & rngTo.Address))
我也尝试过:
x = wsSrc.Evaluate("INDEX(" & rngLookup.Address & _
",MATCH(" & strDate & "USD" & strTo & "," & _
rngDate.Address & "&" & rngFrom.Address & "&" & rngTo.Address)
我甚至尝试使用CStr(CDate())
转换日期,Dim sht As Worksheet, dt, sFrom, sTo
Set sht = ActiveSheet ' e.g.
dt = DateSerial(2017, 12, 18)
sFrom = "B"
sTo = "C"
Debug.Print sht.Evaluate( _
"INDEX(Table24[lookup],MATCH(1," & _
"(Table24[date]=" & (dt * 1) & ")*" & _
"(Table24[from]=""" & sFrom & """)*" & _
"(Table24[to]=""" & sTo & """),0))")
适用于Excel,但不适用于VBA。
没有任何欢乐,任何想法?再次,确认我只想要的值不是粘贴到单元格中的公式。
这对我来说使用了同名的表和列:
qazxswpoi
假设您的表格的日期是实际日期而不是字符串。