1

我有 3 列 A、B 和 C。数据在 B 和 C 中。我过滤 C 列以显示“仅唯一记录”。现在我想将序列号添加到 A 列中的过滤数据中。请注意,列表中的行数(因此过滤列表)不是固定的。我知道函数 (=SUBTOTAL(3,$B$1:B2)-1 ) 但这需要手动干预。我还发现了适用于未过滤列表的 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

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

4

2 回答 2

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
于 2013-11-07T19:12:13.680 回答
0

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

=IF(AND(COUNTIF(C$3:C3,C3)=1,C3<>""),max(A$2:A2)+1,"")
于 2013-11-07T19:18:15.487 回答