Excel VBA代码,用于根据动态更新的单元格值删除行

Excel VBA代码,用于根据动态更新的单元格值删除行,excel,vba,Excel,Vba,我有一个工作表,需要根据输出公式的列的索引值删除行 这是我正在处理的数据: 以下是数据的内容: 每个作业ID(A列)有2个值:分配给不同所有者的True和False 现在,列F具有指定为满足某些条件的数据 每次删除作业ID(作业的两行)时,F列中的最后一个值将根据条件不断更新为“是/否” 我想要达到的目标是: 当最后一列的值为“否”时,一次检查一行,并将两行(一个作业)移到底部 当这些删除或移位发生时,最后一列中的数据将更新 因此,宏应该是动态的 以下是我尝试过的代码: Sub delet

我有一个工作表,需要根据输出公式的列的索引值删除行

这是我正在处理的数据:

以下是数据的内容:

每个作业ID(A列)有2个值:分配给不同所有者的True和False

现在,列F具有指定为满足某些条件的数据

每次删除作业ID(作业的两行)时,F列中的最后一个值将根据条件不断更新为“是/否”

我想要达到的目标是:

  • 当最后一列的值为“否”时,一次检查一行,并将两行(一个作业)移到底部
  • 当这些删除或移位发生时,最后一列中的数据将更新
  • 因此,宏应该是动态的
以下是我尝试过的代码:

Sub delete()

    Dim i As Integer
    Dim LastRow As Integer
    LastRow = Range("A").End(xlUp).Row

    For i = 2 To LastRow
        If Range("F" & i).Value = "No" And Range("A" & i).Value = Range("A" & i + 1).Value Then
            Rows(i & ":" & (i + 1)).Cut
            Range("A").End(xlDown).Offset(1, 0).EntireRow.Insert
            Application.CutCopyMode = False
        End If
    Next

End Sub
这似乎不起作用。删除部分在我使用以下代码行的情况下部分工作:

 Rows(i & ":" & (i+1)).Select
        Selection.delete Shift:=x1Up

我无意冒犯你,但我看不出你的制度有什么好处。请考虑这个问题。
  • 创建一个helper列并在其第2行中输入此公式。
    =SUM(间接(地址(行()-MOD(行(),2),5)&“&ADDRESS(行()+1-MOD(行(),2,5))*(如果(和(间接(J2)>50,间接(K2)>50),2,1))+(行()/10000)
  • 抄写到工作表的末尾
  • 按此列排序
  • 隐藏助手
  • 请注意,该公式设计用于计算两个连续行,其中第一行为偶数行,第二行为非偶数行。如果第2行用于其他内容,则需要调整公式以从第3行开始,或以不同方式调整公式以从第4行开始

    这就是它的工作原理。 它添加了两个重复(E列)。如果两者都高于50,则结果将乘以2。这将确保所有两个估值高于50的行将被排序在所有其他行的前面。最后,添加行号/10000。如果数据中的行数超过10000行,则将该数字设为100000。关键是,该划分的结果必须始终小于1,以免干扰估值。当其他估值相同时,此添加操作将起到平分的作用,它将确保排序后两行的顺序保持不变

    当然,这种排序将创建一个比简单地将表现较差的人排到最后更加敏感的列表。它还将使F列中的公式不受干扰。
    它的最后一个优点是可以对“帮助者”列中的条件进行微调,以更好地满足您的需要。

    这可能无法解决您的问题,但是如果要将
    i
    变量和
    LastRow
    变量用作行号,则它们应该是
    Long
    而不是
    整数。另一件事:当编写删除条目的函数时,应该从最后一个到第一个,而不是从第一个到最后一个。