簡體   English   中英

VBA 如何使用 Application.WorksheetFunction 添加循環。?

[英]VBA How to add a loop with Application.WorksheetFunction.?

您能否建議如何在所有填充的行中循環我的代碼(基於 D 行)? 我需要從 ad2 中減去 d2,從 ad3 中減去 d3 等等,然后將結果放在 ae 列中(我猜是偏移量)。

理想情況下,避免在 ae 中輸入公式,而是使用Application.WorksheetFunction.Value=Total

Sub valuedifference()
Dim Total As Double
Dim TimeX As Date
Dim TimeY As Date

With ThisWorkbook.Sheets("Test1")
TimeX = CDate(Range("d2").Value)
TimeY = CDate(Range("ad2").Value)
Total = TimeValue(TimeY) - TimeValue(TimeX)

Range("ag2").Value = Abs(Total * 24)
Range("ah2").Value = Abs(Total * 1440)
End With

End Sub

下面的宏使用 D 列查找最后一行,然后循環遍歷每一行並將結果放在 AE 列中...

Sub valuedifference()

    Dim Total As Double
    Dim TimeX As Date
    Dim TimeY As Date
    Dim LastRow As Long
    Dim i As Long
    
    With ThisWorkbook.Sheets("Test1")
        LastRow = .Cells(.Rows.Count, "d").End(xlUp).Row
        For i = 2 To LastRow
            TimeX = CDate(.Range("d" & i).Value)
            TimeY = CDate(.Range("ad" & i).Value)
            Total = DateDiff("n", TimeY, TimeX)
            .Range("AE" & i).Value = Total
            .Range("AG" & i).Value = Format(Abs(Total), "#.##")
            .Range("AH" & i).Value = Format(Abs(Total), "#.##")
        Next i
    End With

End Sub

我強烈建議使用Range變量和偏移量,而不是組裝單元格名稱引用。

由於回寫電子表格是一個包含 3 個單元格的塊,因此您可以使用寫入塊的所需值的Array來減少電子表格更新。

對我來說,一個懸而未決的問題是你是否也想捕捉天數的差異,或者只是像你在這里所做的那樣捕捉時間差異(無論日期如何)?

Sub valuedifference()

Dim Total As Double
Dim TimeX As Date
Dim TimeY As Date
Dim LastD As Range
Dim DRange As Range
Dim ACell As Range

Set LastD = Sheets("Test1").Cells(Sheets("Test1").Cells.Rows.Count, 4).End(xlUp)
Set DRange = Range(Sheets("Test1").Range("D2"), LastD)
For Each ACell In DRange
    TimeX = CDate(ACell.Value)               ' from D column
    TimeY = CDate(ACell.Offset(0, 26).Value) ' from AD column
    Total = TimeValue(TimeY) - TimeValue(TimeX)
    ' Place results in AE rightward cells
    ACell.Offset(0, 27).Resize(1, 3).Value _
          = Array(Total, Abs(Total * 24), Abs(Total * 1440))
Next ACell

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM