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

时间:2017-07-18 12:01:10

标签: excel vba excel-vba

我目前正试图在这个Excel电子表格中整理出一堆页码。

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

屏幕截图:

enter image description here

我想创建一个宏,可能使用VBA脚本中的RegEx搜索每个值并检查它当前所在的值与下面的值之间的差异。如果差异为1,那么它很好,但如果差异为2,则应删除整行,差异为2的数字为。

基本上,脚本应删除上图中包含2的行。

我对VBA编码不太方便,所以一些帮助将不胜感激!

谢谢,

Aydan。

2 个答案:

答案 0 :(得分:0)

按照屏幕截图显示,此代码假设带有页码的列将为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

答案 1 :(得分:0)

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

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