基于序列删除整行

我有一些数据是从MYOB中转储出来的,我需要sorting。 MYOB转储的数据格式如下:

  • BSB号码:000-000
  • 银行帐号:123456789
  • 银行帐户名称:公司名称

我有一个if语句添加到这些单元格的右侧,返回一个1或2或3,我已经确定是序列。

如果没有保留1,2,3的序列,有没有一个macros或方法可以删除整行数据?

例:

  • BSB号码:000-000 1
  • 银行帐号:123456789 2
  • 银行帐号名称:公司名称3
  • BSB号码:000-000 1
  • 银行帐号:123456789 2
  • 银行帐号名称:公司名称3
  • BSB号码:000-000 1
  • 银行帐号名称:公司名称3
  • BSB号码:000-000 1
  • 银行帐号:123456789 2
  • BSB号码:000-000 1
  • 银行帐号:123456789 2
  • 银行帐号名称:公司名称3

序列必须保持为1,然后是2,然后是3.如果序列中断,则该行必须被删除。

这可能吗?

谢谢!

一个快速的VBAmacros。 假设你的数据是列C(= 3)。
如果一行应该被删除,它会向D列写入“x”

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行没有sorting,所以不完美。 但它是一个开始。
也许别人可以改善答案。

在这里输入图像说明

我真的很喜欢你的问题,并得到了一个难以置信的 – +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值的行。

我仍然会给它更多的思考,试着想出一个更优雅的解决scheme,但是这肯定会有诀窍。

编辑(基于评论)

为了让屏幕截图显示为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)