我希望单元格按增量顺序编号,具体取决于过滤器。我发现最简单的方法是检查上面的行是否隐藏,然后将其自身编号为1(如果隐藏,前一个单元格值+ 1,如果没有隐藏)。
我试图使用公式
=IF(COUNTA(ADDR)>SUBTOTAL(103, ADDR), 1, ADDR+1)
ADDR
的定义如下:
=ADDRESS(ROW()-1,COLUMN(), 4, TRUE)
SUBTOTAL
函数返回 #VALUE
,因为它不能包含3-D引用。
尝试将 SUBTOTAL()
替换为 AGGREGATE()
,同样的问题。
尝试使用 VALUE()
函数将 ADDR
字符串转换为值。
我尝试使用 VBA
Public Function IsHid(i As Integer)
Dim re As Range, x As Integer
Set re = Range("A" & i)
If re.EntireRow.Hidden Then
Set re = Range("A" & i + 1)
re = 1
Else
x = re.Value + 1
Set re = Range("A" & i + 1)
re = x
End If
End Function
上述函数返回 #VALUE
以下函数也会返回 #VALUE
。
Public Function IsHid(i As Integer)
If Excel.ThisWorkbook.ActiveSheet.Rows(i).Hidden Then
Cells(i + 1, 1).Value = 1
Else
Cells(i + 1, 1).Value = Cells(i, 1).Value + 1
End If
End Function
非常感谢能通过 FORMULAS
获取此功能,而不是 VBA
答案 0 :(得分:1)
使用小计与计数(A)结合:
=SUBTOTAL(3,B$2:B2)
并粘贴。
这可以在A列中,当您在B,C等上进行过滤时,它只会对可见行进行编号
您可能还需要查看here,以获取其他说明。
修改强> 假设您有Sheet1,并填写范围A:G。在A列中,您需要问题中描述的编号。然后范围A1将保持标题(例如FilteredID),范围B:G将保存您的其他值。
在范围A2中,您将公式=Subtotal(3, B$2:B2)
放在范围A3中,这将是=Subtotal(3, B$2:B3)
,在A4 =Subtotal(3, B$2:B4)
中等等。
现在,当您过滤B,C,D等列时,您将拥有不可见的行,A列中的编号将显示可见的行号。
答案 1 :(得分:0)
例如,假设您要在第2行和第A列中开始编号,并且您拥有Excel 2010或更高版本:
=AGGREGATE(4,5,A$1:A1)+1
只需根据需要调整起始单元格。