基于序列删除整行
我有一些数据是从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)