Excel VBA - 循环比较单元格,偏移整行

Excel VBA - 循环比较单元格,偏移整行

希望有人能帮助我!

刚开始学习 VBA。

我正在尝试下面的代码。

目的是比较从第 4 行开始的行中的单元格,并根据条件将整行向上或向下偏移

条件是

开始日期必须介于不早于和不晚于日期之间 年龄必须大于或等于 11 岁

Sub sequenceOptimizer()   

'Processing Start Date: Column E - Column Number: 5
'Processing Not Before: Column K - Column Number: 11
'Processing Not After: Column L - Column Number: 12
'Processing Age at Processing Start Date: Column M - Column Number: 13   

Dim rw As Long

With ActiveWorkbook.ActiveSheet
    LastRow = .UsedRange.Rows.Count
    For rw = 2 To LastRow    

    Do Until IsEmpty(ActiveCell)
        If .Cells(rw, 5) < .Cells(rw, 11) Then 
            ActiveCell.EntireRow.Offset(1, 0).Select
        If .Cells(rw, 5) >= .Cells(rw, 11) And .Cells(rw, 13) < 11 Then 
            ActiveCell.EntireRow.Offset(1, 0).Select
        If .Cells(rw, 5) >= .Cells(rw, 11) And .Cells(rw, 5) <= .Cells(rw, 12) And .Cells(rw, 13) < 
            11 Then 
            ActiveCell.EntireRow.Offset(1, 0).Select
        If .Cells(rw, 5) >= .Cells(rw, 11) And .Cells(rw, 5) > .Cells(rw, 12) Then 
            ActiveCell.EntireRow.Offset(-1, 0).Select

        End If
    Next Row   
    Loop

End With

End Sub

在此处输入图片描述

我创建了一个流程图来说明这个过程。

除了使用 LastRow,还可以将最后一行设置为行号 3001,因为最大批次数为 3000。

首先,使用简单的 Excel 多级排序对电子表格进行排序,首先按不早于日期,然后按不晚于日期,最后按增长开始日期,然后为计算列插入公式。

在理想条件下,这种不使用 VBA 宏的简单排序应该可以给出理想的序列。

然而,在前一年,处理批次时并未遵循“不早于”和“不晚于”日期标准。

因此,当在当前年份应用相同的“不早于”和“不晚于”时间段时,对于某些批次而言,下一年度的年龄(当前年份的处理开始日期与增长开始日期(等于上一年的处理开始日期)之间的差值)少于 11 个月。

然后进入 VBA 宏,通过从行号 4 开始处理并移动到下一行,简单地按升序行号直到最后一个非空白行,来找到理想的序列。

最后,宏确保处理开始日期始终位于“不早于”和“不晚于”日期之间,且年龄大于或等于 11。

如果将处理开始日期保持在“不早于”和“不晚于”日期之间,则无法满足年龄 >= 11 的标准,行将向上移动,直到处理开始日期介于“不早于”和“不晚于”日期之间。换句话说,最佳食用日期。

在此处输入图片描述

相关内容