Excel-Macro将序列号填充到过滤后的数据

时间:2013-11-07 19:05:49

标签: excel vba excel-vba ms-office

我有3列A,B和B C.数据在B& B中。 C.我过滤C列以显示“仅限唯一记录”。现在我想在A列中为此过滤数据添加序列号。请注意,列表中的行数(以及过滤后的列表)不是固定的。 我知道函数(= SUBTOTAL(3,$ B $ 1:B2)-1)但这需要人工干预。我还found在未经过滤的列表上工作的VBA代码:

Sub FillSerialNumbers()
  With Range("A3:A" & Range("B" & Rows.Count).End(xlUp).Row)
    .Cells(1, 1).Value = 1
    .DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Trend:=False
  End With
End Sub

但是我无法在已过滤的列表中实现它。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

这是另一种方式

  Set rRng = Range("A3:A" & Range("B" & Rows.Count).End(xlUp).Row)
  Dim cntr As Integer: cntr = 1

  For Each cell In rRng
    If cell.EntireRow.Hidden = False Then
        Cells(cell.Row, 1).Value = cntr
        cntr = cntr + 1
    End If
  Next

答案 1 :(得分:0)

作为公式解决方案,您可以尝试在单元格A3中复制下来:

=IF(AND(COUNTIF(C$3:C3,C3)=1,C3<>""),max(A$2:A2)+1,"")