Microsoft Excel で行の最も早い日付を取得する方法を知っている人はいますか? 各行の予測可能な列数はなく、無視する必要がある日付以外の値があります。Excel の数式または VBA で実行できます。
誰か提案はありますか?
現在、この簡単で汚い VBA 関数を使用していますが、新しい入力データ (約 200 行 x 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