有谁知道如何在 Microsoft Excel 中连续获取最早的日期。每行上没有可预测的列数,并且除了日期之外还有一些值需要忽略。可以使用 Excel 公式或 VBA 来完成。
有没有人有什么建议?
现在我正在使用这个快速而肮脏的 VBA 函数,但是当我加载新的输入数据(大约 200 行乘 100 列)时,出现了一个消息框,说 Excel 没有足够的资源来处理我的更改。
' returns smallest date on row
Public Function getSmallestDateFromRow(r As Integer, sheetName As String) As Date
Dim toReturn As Date
Dim rng As Range
Dim scanToColumn As Integer
Dim c As Integer
Dim tmp As Variant
Set rng = Sheets(sheetName).Cells.Find("*", [a1], , , xlByColumns, xlPrevious) 'is this inefficient?
scanToColumn = rng.Column
toReturn = #12/12/2100#
For c = 1 To scanToColumn
tmp = Sheets(sheetName).Cells(r, c).Value
If (IsDate(tmp)) Then
If (toReturn = Null) Then
toReturn = tmp
ElseIf (toReturn > tmp) Then
toReturn = tmp
End If
End If
Next c
If (toReturn = #12/12/2100#) Then
toReturn = 0
End If
getSmallestDateFromRow = toReturn
End Function