Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-检查数字序列,必要时替换下一个或最后一个值_Excel_Vba - Fatal编程技术网

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

Excel VBA-检查数字序列,必要时替换下一个或最后一个值,excel,vba,Excel,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 我的逻辑是:第一个案例。。。如果单元格=50,则返回到最后一个单

我在解决这个问题时遇到了极大的困难。我尝试过使用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

我的逻辑是:第一个案例。。。如果单元格=50,则返回到最后一个单元格,如果该单元格=43,则将该单元格的值更改为49。第二个案例。。。如果单元格=49,则转到下一个可用单元格,如果该单元格=43,则将该值更改为50。请记住,将有一些空单元格需要处理,如下列所示

A 42 “空的” 43 “空的” 49 “空的” “空的” “空的” 43

让我知道,如果你们都需要更多的澄清,并感谢您的寻找和帮助!我希望我遵循了问题的格式,如果没有,我很抱歉

谢谢,谢谢

像这样的

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

在单元格中向后循环:如果找到50,则将下一个找到的数字设置为49。如果你找到43,那么将下一个设置为42。谢谢你的回复和帮助。我是一个新的VBA,我不知道该怎么做。我一直在研究如何使用以下行中的某些内容来反向循环:“Dim CELL As Range Dim TotalRows As Long TotalRows=Cells(Rows.Count,1)。End(xlUp)。Row For I=TotalRows to 1 Step-1 Set c=Range(“A”&I)如果c.CELL.Value=50,那么c.CELL.Value=49下一步我很抱歉,看起来我无法在我的评论中使用代码格式。感谢您的帮助并再次回复!它给了我一个“设置c=c.offset(-1,0)时的应用程序定义或对象定义错误。而且,从代码中看,您没有考虑49,43场景,应该是49,50。因此,要修复此场景,我只需要反转您的代码。我应该去xldown并增加(1,0),而不是去xlup行.再次感谢你的帮助!