仅可见单元格的行数
row count for visible cells only
我想创建一个用公式填充空白单元格的宏。该公式将引用上面的单元格,但仅在我将 Subtotal
应用于我的数据之后,以及仅在具有 Total
的行上(参见下面的示例屏幕截图):
到目前为止,我的宏将应用小计,然后在包含总计的列上进行过滤,并过滤单元格中带有 Total
的任何内容。之后它计算所有不可见的行并减去 2(我不想计算 header 和总计)。它获取计数并循环公式应用程序。
就是说,它在大部分时间都有效,但有时它会误算 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
我注意到你的代码中有些地方不对,我不知道它是否是这个 post 的错字,或者它是否真的在你的代码中..
ActiveSheet.Range("G1:G" & x).AutoFilter Field:=7, Criteria1:="=*total*", Operator:=xlAnd, Criteria2:="<>Grand Total", Operator:=xlAnd
我想如果这是 运行 它可能会在某个时候发疯。它有 2 'Operator:=xlAnd' 这很奇怪,我预计会出现错误。
这个错误计数可能有几个原因,如果它不是由这个坏过滤器部分引起的,它可能只是一些被忽略的简单问题,
什么是Rows.Count?这是否可能将活动单元格(如果您愿意,可以使用光标)置于使用 .End(xlUp) 时它可能会跳过 table 中的几个空白单元格的位置?如果是这种情况,它可能会过滤但忽略几行,使额外的行保持可见,而这些行不应该......可能
RowCount = rng.Columns(2).SpecialCells(xlCellTypeVisible).Count - 2
这绝对值得关注,因为您的问题是 2 行有时会被错误计算并且您在此处明确删除了 2 行 (-2),但我怀疑这是原因,尽管它可能是它始终为 2 的原因,所以它必须在上面的代码中.......
发生这种情况时,您还需要检查 table 中的数据,并且 post 如果可能的话,如果没有真实数据,确实不容易查明这里发生了什么。
只要post回来,如果你能重现问题或post一些真实的数据,那将是一个很大的帮助。
谢谢 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
我想创建一个用公式填充空白单元格的宏。该公式将引用上面的单元格,但仅在我将 Subtotal
应用于我的数据之后,以及仅在具有 Total
的行上(参见下面的示例屏幕截图):
到目前为止,我的宏将应用小计,然后在包含总计的列上进行过滤,并过滤单元格中带有 Total
的任何内容。之后它计算所有不可见的行并减去 2(我不想计算 header 和总计)。它获取计数并循环公式应用程序。
就是说,它在大部分时间都有效,但有时它会误算 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
我注意到你的代码中有些地方不对,我不知道它是否是这个 post 的错字,或者它是否真的在你的代码中..
ActiveSheet.Range("G1:G" & x).AutoFilter Field:=7, Criteria1:="=*total*", Operator:=xlAnd, Criteria2:="<>Grand Total", Operator:=xlAnd
我想如果这是 运行 它可能会在某个时候发疯。它有 2 'Operator:=xlAnd' 这很奇怪,我预计会出现错误。
这个错误计数可能有几个原因,如果它不是由这个坏过滤器部分引起的,它可能只是一些被忽略的简单问题,
什么是Rows.Count?这是否可能将活动单元格(如果您愿意,可以使用光标)置于使用 .End(xlUp) 时它可能会跳过 table 中的几个空白单元格的位置?如果是这种情况,它可能会过滤但忽略几行,使额外的行保持可见,而这些行不应该......可能
RowCount = rng.Columns(2).SpecialCells(xlCellTypeVisible).Count - 2
这绝对值得关注,因为您的问题是 2 行有时会被错误计算并且您在此处明确删除了 2 行 (-2),但我怀疑这是原因,尽管它可能是它始终为 2 的原因,所以它必须在上面的代码中.......
发生这种情况时,您还需要检查 table 中的数据,并且 post 如果可能的话,如果没有真实数据,确实不容易查明这里发生了什么。
只要post回来,如果你能重现问题或post一些真实的数据,那将是一个很大的帮助。
谢谢 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