所以我创建了一个UDF,它是一个索引匹配项。它运行完美,但是当我将变量之一更改为某个日期时,我遇到了问题。我根本无法输入“ oct-18”,oct-18或01-10-2018。我必须引用具有日期的单元格,我认为这是因为它链接到10月18日的日期代码43374。我想同时拥有两种选择:
1)我可以引用单元格的地方 2)在这里我可以简单地输入日期,例如oct-18
任何帮助或做什么指示都很好
下面是我写的UDF:
Function flatrate(Xa, Aa)
Application.Volatile
Dim lngRowMatch As Long
Dim lngColMatch As Long
Dim matrix As Range
Set matrix = Sheets("flat rates").Range("flat_rates")
With matrix
lngRowMatch = Application.WorksheetFunction.Match(Xa, .Columns(1), 0)
lngColMatch = Application.WorksheetFunction.Match(Aa, .Rows(1), 0)
flatrate = .Cells(lngRowMatch, lngColMatch)
End With
Exit Function
End Function
答案 0 :(得分:1)
看起来像日期的字符串仍然不是真实的日期。尝试在函数中添加日期转换。
Function flatrate(Xa as variant, Aa as variant)
Application.Volatile
Dim lngRowMatch As variant
Dim lngColMatch As variant
if isdate(Xa) then _
Xa = cdate(Xa) '<~~ force date conversion here
With workSheets("flat rates").Range("flat_rates")
lngRowMatch = Application.Match(Xa, .Columns(1), 0)
lngColMatch = Application.Match(Aa, .Rows(1), 0)
if iserror(lngRowMatch) or iserror(lngColMatch) then
flatrate = cverr(xlerrna)
else
flatrate = .Cells(lngRowMatch, lngColMatch)
end if
End With
End Function
答案 1 :(得分:0)
尝试引用.Cells(lngRowMatch, lngColMatch).value2
来获取Excel不会自动转换的单元格的实际值。