0

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
4

1 に答える 1