繁体   English   中英

仅可见单元格的行数

[英]row count for visible cells only

我想创建一个宏,该宏将用公式填充空白单元格。 该公式将引用上面的单元格,但是仅在我将Subtotal应用于数据之后,并且仅在具有Total的行上使用(请参见下面的示例屏幕截图):

在此处输入图片说明

到目前为止,我的宏将应用小计,然后在具有总计的列上进行过滤,并为单元格中具有Total任何内容进行过滤。 然后,它计算所有不可见的行并减去2(我不想计算标题和总计)。 它需要计数并循环公式应用程序。

就是说,它在大多数情况下都有效,但是每隔一段时间它都会错误地计数2,而我不知道为什么。

数据的格式相同,每次使用相同的列。

我希望我能清楚地解释我的问题,并且样本和代码段就足够了:

'filling in empty cells on subtotal line
Cells.Select
    Selection.AutoFilter
    LastRow = Range("G" & Rows.Count).End(xlUp).Row
        x = LastRow
    ActiveSheet.Range("G1:G" & x).AutoFilter Field:=7, Criteria1:="=*total*", Operator:=xlAnd, Criteria2:="<>Grand Total", Operator:=xlAnd

Set rng = ActiveSheet.AutoFilter.Range
'-2 is to NOT count the header or Grand Total for my loop count
RowCount = rng.Columns(2).SpecialCells(xlCellTypeVisible).Count - 2
    r = RowCount

问题是,您的范围不会继续(由于过滤了单元格)。 这将使rows.count停止正常运行。 尝试这个:

Number_of_Rows= rng.Resize(, 1).SpecialCells(xlCellTypeVisible).Count

我注意到您的代码中的某些内容是不正确的,我不知道它是否是本文中的错字,或者它是否确实在您的代码中。

ActiveSheet.Range("G1:G" & x).AutoFilter Field:=7, Criteria1:="=*total*", Operator:=xlAnd, Criteria2:="<>Grand Total", Operator:=xlAnd

我想如果这正在运行它可能会在某个时候吓坏。 它有2个'Operator:= xlAnd',这很奇怪,我期待一个错误。

错误计数可能是几件事情,很可能只是一些简单的事情,如果不是由这个不良的过滤器部分引起的,则被忽略了,

什么是Rows.Count? 是否可以将活动单元格(如果需要的话,将光标放置)放在使用.End(xlUp)时可能跳过表中几个空白单元格的位置? 如果是这种情况,它可能会过滤,但会忽略几行,从而使多余的行保持可见,这是不应该的。

RowCount = rng.Columns(2).SpecialCells(xlCellTypeVisible).Count - 2

这绝对是您感兴趣的问题,因为您的问题有时是2行,而您在这里显式地删除了2行(-2),但是我怀疑这是原因,尽管它可能总是2的原因,所以它必须在上面的代码中........

当发生这种情况时,您还需要检查表中的数据,并在可能的情况下将其发布,如果没有真实数据,要查明这里发生的情况真的不容易。

如果您可以重新创建问题或发布一些实际数据,只需回发,这将是一个很大的帮助。

感谢Doktor,但我环顾了一下,发现此解决方案可解决我的问题,它始终计算要循环的正确数字。

    Dim LastRow as interger, x as integer

    'add autofilter
    Cells.Select
    Selection.AutoFilter
    'filter for Total
    ActiveSheet.Range("G1:G" & x).AutoFilter Field:=7, Criteria1:="=*total*", Operator:=xlAnd, Criteria2:="<>Grand Total", Operator:=xlAnd

    'find last row
    LastRow = Range("G" & Rows.Count).End(xlUp).Row
       x = LastRow

    'count visible rows
    RowCount = Range("G1:G" & x).Rows.SpecialCells(xlCellTypeVisible).Count - 2
       r = RowCount

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM