我有一个表,其中 A 列包含递增的数值,B 列是一堆名称。我需要根据名称过滤表格,并使用当前行中 A 列中的值与上面的单元格之间的差异更新 C 列。
For example, I'd like to have something like this
哪个,
when filtered according to the Name column, should update the difference like so
我尝试以几种不同的方式使用 SUBTOTAL 函数,但无济于事。理想情况下,一旦更改表中的过滤器,它就会更新。我尝试在 VBA 中执行此操作,但到目前为止,我已经获得了仅使用硬编码过滤条件进行过滤的宏。
excel 公式/python/vba 中的解决方案都受到欢迎并非常感谢!
如果这个问题不符合标准,我提前道歉,因为我是新来的:) 提前谢谢你!
@JvdV:This是我试图实现你的公式的结果,This是过滤后的。
最佳答案
修改后的答案
因此,在您的解释之后,我研究了一个公式,该公式将为您提供当前行 B 值减去之前 A 值出现的 B 值的差值。
=IFERROR(B2-LOOKUP(2,1/($A$1:A1=A2),$B$1:B2),0)
获取您的样本数据,它看起来像这样:
然后当你应用过滤器时,它看起来像这样:
因此,使用此解决方法时,您在未应用过滤器时没有正确的值,但在这种情况下,我假设您对 时的差异感兴趣是 过滤!
公式输入单元格
C2
并被拖了下来。编辑
如果这不是您想要的答案,而您 做 在未过滤时需要这些值,请使用如下 UDF:
Public Function LastVisibleCell(CL As Range) As Long
Dim RW As Long, X As Long
RW = CL.Row - 1
On Error GoTo 1
If RW > 1 Then
For X = RW To 1 Step -1
If ActiveSheet.Rows(X).EntireRow.Hidden Then
Else
LastVisibleCell = Cells(CL.Row, 2).Value - Cells(X, 2).Value
Exit For
End If
Next X
Else
1: LastVisibleCell = 0
End If
End Function
从单元格
C2
调用它喜欢:=LastVisibleCell(A2)
并向下拖动。当您应用过滤器时,单元格将更新。请注意,这将需要很长时间才能更新大型数据集!
关于Excel:计算自动过滤表中单元格和单元格之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51855502/