Excel VBA - 检查数字序列并在必要时替换下一个或最后一个值

时间:2014-03-09 22:13:38

标签: excel excel-vba vba

我在尝试解决这个问题时遇到了极大的困难。我尝试过使用case语句和if / else语句没有运气。这是我的问题!我在一列中有一系列数字,例如42,43,49,50,其中42始终跟随值43,其中49始终跟随值50.

有时我会有一系列数字,它们会出现故障,例如42,43,49,43。在这种情况下,我需要将模式更改为42,43,49,50。 在另一种情况下,我有一系列数字,如42,50,49,50,我需要将模式更改为49,50,49,50。

这是我的逻辑:第一种情况......如果cell = 50返回到最后一个单元格,如果该单元格= 43,则将该单元格值更改为49.第二种情况...如果cell = 49则转到下一个可用单元格如果那个单元格= 43,则将该值更改为50.请记住,必须处理空单元格,如下一列所示。

一个 42 “空” 43 “空” 49 “空” “空” “空” 43

如果您需要更多说明,请告诉我,并感谢您寻求帮助!我希望我遵循问题​​格式,对不起,如果我没有!

谢谢,谢谢!!!

1 个答案:

答案 0 :(得分:0)

像这样......

Sub Tester()

Dim c As Range, i As Long, vLast

    Set c = Cells(Rows.Count, 1).End(xlUp)

    Do While c.Row >= 2
        If Len(c.Value) > 0 Then
            If Len(vLast) > 0 Then
                If vLast = 50 Then c.Value = 49
                If vLast = 43 Then c.Value = 42
            End If
            vLast = c.Value
        End If
        Set c = c.Offset(-1, 0)
    Loop

End Sub