计算所有列中仅具有特定日期值的行
Count rows that only have cetrain date values in all colums
所以我是一个完整的 VBA 新手,我有点需要帮助来解决似乎需要 Excel VBA 脚本的问题。
我得到了一个包含大量日期和其他值的 Excel 图表。我需要找到所有日期早于当前日期的行(假设当前日期是 23.03.2022),该行中的所有日期都需要更早,并且只需要是该行中的日期,因为要计算的行。最后我需要找出有多少行并将该数字粘贴到某个单元格中。
因此,例如在最后 id 得到输出,即有 1 行的日期早于当前行。因为其他行至少有一个未来日期、至少一个空单元格或包含日期以外内容的单元格。
我已经尝试了 excel 函数的 cetrain nubers,我也尝试制作单独的图表和函数的子步骤,但我没有让它工作。所以我想我给 VBA 一个机会,但我除了 Java 一个 C+ 之外没有任何经验。
计算日期行 UDF
计算一个区域中所有单元格都包含早于给定日期的日期的行数。
如果没有给定日期,则使用今天的日期。
如果一行中的单元格包含任何非日期的内容,则为 'disqualified'。
在Excel中使用(根据贴图)
=CountDateRows(B2:D4)
=CountDateRows(B2:D4,DATE(2022,3,22))
=CountDateRows(Sheet2!B2:D4,DATE(2022,3,22))
=CountDateRows(Sheet2!B2:D4,A1) ' A1 contains a date
标准模块中的代码,例如Module1
Option Explicit
Function CountDateRows( _
ByVal rg As Range, _
Optional ByVal InitialDate As Variant) _
As Long
If IsMissing(InitialDate) Then InitialDate = Date
Dim rCount As Long: rCount = rg.Rows.Count
Dim cCount As Long: cCount = rg.Columns.Count
Dim Data As Variant
If rCount + cCount = 2 Then
ReDim Data(1 To 1, 1 To 1): Data(1, 1).Value = rg.Value
Else
Data = rg.Value
End If
Dim cValue As Variant
Dim r As Long
Dim c As Long
Dim fCount As Long ' Number of Found Rows
Dim IsOk As Boolean
For r = 1 To rCount
For c = 1 To cCount
cValue = Data(r, c)
If IsDate(cValue) Then
If cValue < InitialDate Then IsOk = True
End If
If IsOk Then IsOk = False Else Exit For
Next c
If c > cCount Then fCount = fCount + 1
Next r
CountDateRows = fCount
End Function
所以我是一个完整的 VBA 新手,我有点需要帮助来解决似乎需要 Excel VBA 脚本的问题。 我得到了一个包含大量日期和其他值的 Excel 图表。我需要找到所有日期早于当前日期的行(假设当前日期是 23.03.2022),该行中的所有日期都需要更早,并且只需要是该行中的日期,因为要计算的行。最后我需要找出有多少行并将该数字粘贴到某个单元格中。
因此,例如在最后 id 得到输出,即有 1 行的日期早于当前行。因为其他行至少有一个未来日期、至少一个空单元格或包含日期以外内容的单元格。
我已经尝试了 excel 函数的 cetrain nubers,我也尝试制作单独的图表和函数的子步骤,但我没有让它工作。所以我想我给 VBA 一个机会,但我除了 Java 一个 C+ 之外没有任何经验。
计算日期行 UDF
计算一个区域中所有单元格都包含早于给定日期的日期的行数。
如果没有给定日期,则使用今天的日期。
如果一行中的单元格包含任何非日期的内容,则为 'disqualified'。
在Excel中使用(根据贴图)
=CountDateRows(B2:D4) =CountDateRows(B2:D4,DATE(2022,3,22)) =CountDateRows(Sheet2!B2:D4,DATE(2022,3,22)) =CountDateRows(Sheet2!B2:D4,A1) ' A1 contains a date
标准模块中的代码,例如Module1
Option Explicit
Function CountDateRows( _
ByVal rg As Range, _
Optional ByVal InitialDate As Variant) _
As Long
If IsMissing(InitialDate) Then InitialDate = Date
Dim rCount As Long: rCount = rg.Rows.Count
Dim cCount As Long: cCount = rg.Columns.Count
Dim Data As Variant
If rCount + cCount = 2 Then
ReDim Data(1 To 1, 1 To 1): Data(1, 1).Value = rg.Value
Else
Data = rg.Value
End If
Dim cValue As Variant
Dim r As Long
Dim c As Long
Dim fCount As Long ' Number of Found Rows
Dim IsOk As Boolean
For r = 1 To rCount
For c = 1 To cCount
cValue = Data(r, c)
If IsDate(cValue) Then
If cValue < InitialDate Then IsOk = True
End If
If IsOk Then IsOk = False Else Exit For
Next c
If c > cCount Then fCount = fCount + 1
Next r
CountDateRows = fCount
End Function