如何解决VBA Subtotal(9,"range") 基于另一个列值
我想使用一些宏来使用公式 subtotal(9,"range") 填充单元格,该公式是基于单元格长度的动态范围。 sample
我需要根据列“B”中的值在“C”行中填充公式小计(9;范围)。 它必须检查 B 列上的值,并与下面的行进行比较。如果下一行的值等于或低于,则必须为“空白”,否则,将创建一个公式 =subtotal(9,range),范围将从下面的行开始,直到找到等于或低于的长度.
我做这本手册,但有时我有超过 1000 行。 非常感谢。
解决方法
在您提到的问题中,仅当当前行低于或等于下一行时才使用小计函数填充行,但在您的示例中,您仅在低于时填充。所以我是这样编码的。可以通过将 >
中的 If .Range("B" & next_row) > .Range("B" & r) Then
替换为 >=
Sub populate()
Dim r As Long,r2 As Long,last_row As Long
Dim next_row As Long,current_len As Long,test_len As Long
Dim rng As String
With ActiveSheet
last_row = .Cells(Rows.Count,1).End(xlUp).Row
For r = 2 To last_row
next_row = r + 1
If .Range("B" & next_row) > .Range("B" & r) Then
current_len = .Range("B" & r)
'create range
For r2 = r + 1 To last_row
test_len = .Range("B" & r2)
If current_len >= test_len Then
rng = "C" & r + 1 & ":" & "C" & r2 - 1
Exit For
End If
Next
.Range("C" & r).Formula = "=SUBTOTAL(9," & rng & ")"
End If
Next
End With
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。