Vba 如何在excel中检查列中的连续单元格并检查它们之间的差异

Vba 如何在excel中检查列中的连续单元格并检查它们之间的差异,vba,excel,Vba,Excel,我目前正在尝试整理这个excel电子表格中的一组页码 在这一行中,页码上大约有4000多行,它们都遵循一种模式,即每[随机数]行增加一行(例如,可能是10或50行),除了模式中出现值2小于上面显示值的奇怪不匹配之外 截图: 我想制作一个宏,可能使用VBA脚本中的正则表达式搜索每个值,并检查当前打开的值与下面的值之间的差异。如果差值为1,则可以,但如果差值为2,则应删除启用差值为2的数字的整行 基本上,脚本应该删除上面图像中包含2的行 我对VBA编码不是很在行,所以希望能得到一些帮助 谢谢 Ay

我目前正在尝试整理这个excel电子表格中的一组页码

在这一行中,页码上大约有4000多行,它们都遵循一种模式,即每[随机数]行增加一行(例如,可能是10或50行),除了模式中出现值2小于上面显示值的奇怪不匹配之外

截图:

我想制作一个宏,可能使用VBA脚本中的正则表达式搜索每个值,并检查当前打开的值与下面的值之间的差异。如果差值为1,则可以,但如果差值为2,则应删除启用差值为2的数字的整行

基本上,脚本应该删除上面图像中包含2的行

我对VBA编码不是很在行,所以希望能得到一些帮助

谢谢


Aydan。

根据您的屏幕截图,此代码假设带有页码的列将是C

Sub compareLines()

Application.ScreenUpdating = False
ActiveSheet.Cells(3, 3).Activate

While ActiveCell.Value <> ""

    If ActiveCell.Value - ActiveCell.Offset(-1, 0).Value < 0 Then

        ActiveCell.EntireRow.Delete

    Else

        ActiveCell.Offset(1, 0).Activate

    End If

Wend

Application.ScreenUpdating = True

End Sub
子比较线()
Application.ScreenUpdating=False
单元格(3,3)。激活
而ActiveCell.Value为“”
如果ActiveCell.Value-ActiveCell.Offset(-1,0).Value<0,则
ActiveCell.EntireRow.Delete
其他的
ActiveCell.Offset(1,0).激活
如果结束
温德
Application.ScreenUpdating=True
端接头

选择列中的第一个数值并运行此子项:

Public Sub removeValuesFromCurrentColumn()

    'select first number value and run script
    Dim rCurrentRange As Range, rNextRange As Range
    Dim ws As Worksheet

    Set ws = ActiveSheet
    Set rCurrentRange = Selection

    Do
        Set rNextRange = rCurrentRange.Offset(1, 0)
        'remove values which have relative difference less than -1
        If (rNextRange.Value - rCurrentRange.Value < -1) Then
            ws.Rows(rNextRange.Row).Delete
            Set rNextRange = rCurrentRange.Offset(1, 0)
        Else
            Set rCurrentRange = rNextRange
        End If
    Loop While (rNextRange.Value <> "")

End Sub
Public子移除当前列()中的值
'选择第一个数字值并运行脚本
变暗RCURENTRANGE As Range,rNextRange As Range
将ws设置为工作表
设置ws=ActiveSheet
设置RCURENTRANGE=选择
做
设置rNextRange=RCURentRange.Offset(1,0)
'删除相对差值小于-1的值
如果(rNextRange.Value-rUrEntrange.Value<-1),则
ws.Rows(rNextRange.Row).删除
设置rNextRange=RCURentRange.Offset(1,0)
其他的
设置RCURENTRANGE=rNextRange
如果结束
循环时(rNextRange.Value“”)
端接头

首先循环所有行(从下到上!),并进行检查和删除。请回来,我们将帮助您解决遇到的问题。