【问题标题】:Excel VBA: Loop IF statement through two columnsExcel VBA:通过两列循环IF语句
【发布时间】:2018-04-28 14:33:58
【问题描述】:

我有一份包含各种信息的客户名单。 C 列显示开始日期,Q 列显示状态。

我需要通过 C 列循环一个 IF 语句,检查今天的 date() 以及客户端的相应状态是否为 100%。如果为真,则将 C 列中的日期加 1 年。

Private Sub Workbook_Open()
    Dim ID As Date
    Dim Status As Long

    ID = Sheets("Kunder").Range("C" & Rows.Count).End(xlUp).Row


    If ID>= Date And Status = 1 Then
    ID.Value = ID.Value + 365
    End If


    End Sub

非常感谢:-)

【问题讨论】:

    标签: vba loops date range


    【解决方案1】:

    Excel 中的日期只是数字。所以,

    Dim ID as Double
    

    遍历C列中的所有单元格

    Dim cl As Range
    
    With Sheets("Kunder")
        For Each cl In Intersect(.Range("C:C"), .UsedRange)
            If cl.Value = ID And cl.Offset(, 14).Value = 1 Then
                 cl.Value = cl.Value + 365
            End If
        Next cl
    End With
    

    但是,请记住闰年,它们有 366 天。 cl.Offset(, 14) 是 Q 列,插入/删除列时要记住它。

    【讨论】:

    • 谢谢!我猜“ID = date”不见了,但现在它就像一个魅力。先生,你好。
    • 就闰年而言,您认为增加 365,25 天可行吗?
    • 我不这么认为。我的意思是,这段代码在 2017 年会运行良好,但如果你需要它在 2019 年运行,你应该更新宏。如果你认为你不会记得这件事或者你会提前离开你的工作,你可以添加变量,即闰年为 366,平年为 365。仅作记录。
    【解决方案2】:

    这是一个带有条件的基本循环,遍历两列 - 列 A 和列 B。在一个空的 Excel 文件上逐步尝试,您将轻松适应它:

    Public Sub BasicLoop()
    
        Dim i As Long
    
        For i = 1 To 100
            ActiveSheet.Cells(i, 1) = i * 2
            If i * 2 / 4 Mod 2 = 0 Then
                ActiveSheet.Cells(i, 2) = i * 4
            End If
        Next i
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多