所以我是一個完整的 VBA 新手,我需要幫助來解決一個似乎需要 Excel VBA 腳本的問題。我得到了一個包含大量日期和其他值的 Excel 圖表。我需要找到所有日期早于當前日期的行(假設當前日期是 23.03.2022),該行中的所有日期都需要更早,并且只需要是行中的日期,因為要計算的行。最后,我需要找出有多少行并將該數字粘貼到某個單元格中。

因此,例如,在最后 id 得到輸出,即有 1 行的日期比當前日期早。因為其他行至少有一個未來日期,至少一個空單元格或包含日期以外的其他內容的單元格。
我已經嘗試過 cetrain nubers 的 excel 函式,我還嘗試為函式制作單獨的圖表 es 子步驟,但我沒有讓它作業。所以我想我給 VBA 一個機會,但除了 Java 和 C ,我沒有任何經驗。
uj5u.com熱心網友回復:
計算日期行 UDF
計算所有單元格包含早于給定日期的日期的范圍的行數。
如果沒有給定日期,則使用今天的日期。
如果一行中的一個單元格包含任何不是日期的內容,則它是“不合格的”。
在 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/448405.html
上一篇:如何將包含公式的文本部分加粗?
下一篇:選擇直到不等范圍
