首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据序列删除整行

根据序列删除整行
EN

Stack Overflow用户
提问于 2013-01-31 21:28:58
回答 2查看 620关注 0票数 3

我从MYOB中得到了一些数据,我需要整理一下。MYOB转储的数据格式如下:

  • BSB号码: 000-000
  • 银行存款: 123456789
  • 银行名称:业务名称

我在这些单元格的右边添加了一个if语句,返回我已经确定为序列的1或2或3。

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

示例:

  • 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。如果序列中断,则行必须被删除。

这个是可能的吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-31 23:02:59

一个快速的VBA宏。假设您的数据为C列(=3)。

如果应删除一行,则将"x“写入D列。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-01-31 22:28:05

我真的很喜欢你的问题,而且有点困惑-- +1!

我能想出的唯一方法就是用一个很难看的公式,列举出你的3种可能性。假设您的数字在B列中,从单元格B1开始,这个公式将从单元格B4开始工作(这意味着您必须亲自查看前3个结果)。

代码语言:javascript
复制
=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中启动公式,它如下所示:

代码语言:javascript
复制
=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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14635481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档