我在Excel VBA中创建了一个UDF,它返回一个日期和双精度的多维数组。问题是我无法格式化返回的日期。
这是一个简化的例子:
Function test(dates as Range)
Dim results
Dim i As Integer
ReDim results(1 To dates.Cells.Count)
For i = 1 To dates.Cells.Count
results(i) = dates.Cells(i).Value
Next
test = Application.WorksheetFunction.Transpose(results)
End Function
最后的转置只是为了方便列输出(我按Ctrl + Shift + enter)。我使用这个简化的例子,你将无法格式化输出,它不会被视为严格意义上的日期。
有什么想法吗?
答案 0 :(得分:2)
将结果数组更改为双精度数:
Function test(dates As Range)
Dim results() As Double
Dim i As Integer
ReDim results(1 To dates.Cells.Count)
For i = 1 To dates.Cells.Count
results(i) = dates.Cells(i).Value
Next
test = Application.WorksheetFunction.Transpose(results)
End Function
或者将dates.Cells(i).Value
更改为dates.Cells(i).Value2
,这将返回双倍而不是日期字符串:
Function test(dates As Range)
Dim results
Dim i As Integer
ReDim results(1 To dates.Cells.Count)
For i = 1 To dates.Cells.Count
results(i) = dates.Cells(i).Value2
Next
test = Application.WorksheetFunction.Transpose(results)
End Function
然后根据需要格式化单元格。
答案 1 :(得分:0)
您可以尝试这样的事情。
Results(i) = CDate(dates.Cells(i).Value)