【问题标题】:How to find row number of previous visible row如何查找上一个可见行的行号
【发布时间】:2020-01-18 06:07:53
【问题描述】:

如何在过滤后的数据中为每个其他“组”行着色?

类似于 =MOD(SUBTOTAL(103,$A$1:$A2),2)=1 但对于将在帮助列中返回 TRUE 和 FALSE 的组,该列用于着色而不是着色行。

我创建了一个辅助列,它指示如果数据未过滤,是否对行进行着色,但一旦应用过滤器,它显然会失败。

T 列中的辅助列公式:=IF(ROW()=2,FALSE,IF(Q2=Q1,T1,NOT(T1)))

但是,如果我过滤以仅显示迈阿密和芝加哥的位置,我会得到:

我的辅助公式将其结果基于之前的行 Job# 而不是 Previous VISIBLE 行的 Job#。

有没有办法编写只查看可见行的辅助公式或宏??

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    使用 LOOKUP 和 SUBTOTAL 查找最后一个可见行:

    LOOKUP(2,1/(SUBTOTAL(3,OFFSET($Q$1,(ROW($Q$1:$Q1)-1),0,1,1))>0),ROW($Q$1:$Q1))
    

    所以:

    =IF(LOOKUP(2,1/(SUBTOTAL(3,OFFSET($Q$1,(ROW($Q$1:$Q1)-1),0,1,1))>0),ROW($Q$1:$Q1))=1,FALSE,IF(INDEX(Q:Q,LOOKUP(2,1/(SUBTOTAL(3,OFFSET($Q$1,(ROW($Q$1:$Q1)-1),0,1,1))>0),ROW($Q$1:$Q1)))=Q2,INDEX(T:T,LOOKUP(2,1/(SUBTOTAL(3,OFFSET($Q$1,(ROW($Q$1:$Q1)-1),0,1,1))>0),ROW($Q$1:$Q1))),NOT(INDEX(T:T,LOOKUP(2,1/(SUBTOTAL(3,OFFSET($Q$1,(ROW($Q$1:$Q1)-1),0,1,1))>0),ROW($Q$1:$Q1))))))
    

    不可见时会出错但不可见:


    【讨论】:

    • 这很漂亮。保存以备将来使用。我有一部分在那里,但还很远。
    • 非常感谢它完美运行!你能解释一下这是如何工作的吗?
    • SUBTOTAL(3,OFFSET($Q$1,(ROW($Q$1:$Q1)-1),0,1,1))10 的数组返回给查找,然后查找返回最后一行为 1 的位置。然后索引返回从在第一个条件的列中查找。在那之后,它就像你有它的逻辑一样。 @PhilNBlanks
    • @Scott Craner 感谢您的解释。我花了一段时间才理解 1/Subtotal,因为 MS 文档没有特别说明 Lookup 忽略错误,因此有效地保持结果有序。一个问题:小计上>0有什么原因吗?我意识到它会将其更改为真/假,但真的有必要吗?我测试了有无它,用我的数据,它似乎是一样的。但这可能只是我的数据,我可能会错过它的原因。
    猜你喜欢
    • 1970-01-01
    • 2012-03-13
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多