我有一些从MYOB转储的数据需要排序。 MYOB转储的数据采用以下格式:
我在这些单元格的右侧添加了一个if语句,返回1或2或3,我已经确定它是序列。
如果没有保留1,2,3的序列,是否有宏或方法我可以删除整行数据?
示例:
序列必须保持为1然后是2然后3.如果序列中断,则必须删除该行。
这可能吗?
谢谢!
答案 0 :(得分:1)
快速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行未排序。但它是一个开始。
也许其他人可以改善答案。
答案 1 :(得分:0)
我真的很喜欢你的问题并且有点难过 - 为此+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)