首页 > 解决方案 > 获取过滤行数并将结果粘贴到列中

问题描述

我有一个包含地址和相关信息(包括州)的工作表。我想按州过滤工作表并计算过滤的行数,将该行数粘贴到相邻列中的州缩写旁边:StateIN RCount

我可以获取代码来自动过滤并列出工作表中使用的所有状态,但是无法弄清楚如何告诉 Excel 我希望它为我提供每个列出的状态的过滤行数(减去标题行)。我已经尝试了几件事,但这本质上是我正在使用的代码:

'filter and copy individual state data from vqueue worksheet to state worksheet
   Application.ScreenUpdating = False
   Dim x As Range
   Dim rng As Range
   Dim lastRow As Long
   Dim sht As String
   Dim LR As Long
   LR = Range("A" & Rows.Count).End(xlUp).Row
   

'specify sheet name in which the data is stored
   sht = "vqueue"

'change filter column in the following code
   lastRow = Sheets(sht).Cells(Rows.Count, "J").End(xlUp).Row
   Set rng = Sheets(sht).Range("A1:AC" & lastRow)

   Sheets(sht).Range("J1:J" & lastRow).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("AD1"), Unique:=True

   For Each x In Range([AD2], Cells(Rows.Count, "AD").End(xlUp))
      With rng
        .AutoFilter
        .AutoFilter Field:=10, Criteria1:=x.Value
        Range("AE" & x).Value = ws.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count
                
        .SpecialCells(xlCellTypeVisible).Copy
        Sheets.Add(After:=Sheets(Sheets.Count)).Name = x.Value
        ActiveSheet.Paste
      End With
   Next x

我不完全确定我什至将它放置在 for/with 循环中的正确位置。目前,我收到 424 Object required 错误。提前感谢您的帮助!

标签: vbacountadvanced-filter

解决方案


考虑到您只需要计算符合特定条件的 os 记录数,我建议只使用公式而不是 VBA 来处理这种情况。您可以使用其中一个COUNTIFCOUNTIFS功能。如果您使用的是最新版本的 Excel,您还有一个FILTER函数可用于根据指定条件动态生成状态列表,然后使用其中一个计数函数来获取记录计数。


推荐阅读