我从MYOB中得到了一些数据,我需要整理一下。MYOB转储的数据格式如下:
我在这些单元格的右边添加了一个if语句,返回我已经确定为序列的1或2或3。
如果没有保留1,2,3的序列,是否有宏或方法可以删除整行数据?
示例:
序列必须保持为1然后2然后3。如果序列中断,则行必须被删除。
这个是可能的吗?
谢谢!
发布于 2013-01-31 23:02:59
一个快速的VBA宏。假设您的数据为C列(=3)。
如果应删除一行,则将"x“写入D列。
Sub sort()
Application.ScreenUpdating = False
For i = Columns(3).Find("*", [C1], , , , xlPrevious).Row To 4 Step -1
Merge = Cells(i - 0, 3).Value _
& Cells(i - 1, 3).Value _
& Cells(i - 2, 3).Value _
& Cells(i - 3, 3).Value
If Merge = "4321" Then
i = i - 3
Else
Cells(i, 4) = "x"
End If
Next i
Application.ScreenUpdating = True
End Sub不完美,因为前4行没有排序。但这是个开始。
也许其他人可以改进答案。

发布于 2013-01-31 22:28:05
我真的很喜欢你的问题,而且有点困惑-- +1!
我能想出的唯一方法就是用一个很难看的公式,列举出你的3种可能性。假设您的数字在B列中,从单元格B1开始,这个公式将从单元格B4开始工作(这意味着您必须亲自查看前3个结果)。
=IF(OR(AND(B4=1,B5=2,B6=3),AND(B3=1,B4=2,B5=3),AND(B2=1,B3=2,B4=3)),TRUE,FALSE)然后,只需删除此公式返回FALSE值的行。
我仍然会给它更多的思考,并尝试并想出一个更优雅的解决方案,但这肯定会奏效。
编辑(基于注释)
为了像屏幕截图所显示的那样允许一个4,您可以在B5中启动公式,它如下所示:
=IF(OR(AND(B5=1,B6=2,B7=3, B8=4),AND(B4=1,B5=2,B6=3,B7=4),AND(B3=1,B4=2,B5=3,B6=4),AND(B2=1,B3=2,B4=3,B5=4)),TRUE,FALSE)https://stackoverflow.com/questions/14635481
复制相似问题