【发布时间】:2021-07-08 11:20:56
【问题描述】:
尝试了几个小时才能找到答案,但没有运气。 得到带有 A 列的 excel 表,其中 A 列的数字像 1,2,3,6,6,3,4,5,6 我想要从顶部求和列值直到达到 20 或更少,然后导出 sum 中使用的最后一个值的地址或 最好是让自动过滤器选择所有这些值整行并删除它们。 我猜VBA可以做到这一点。 谢谢你
【问题讨论】:
尝试了几个小时才能找到答案,但没有运气。 得到带有 A 列的 excel 表,其中 A 列的数字像 1,2,3,6,6,3,4,5,6 我想要从顶部求和列值直到达到 20 或更少,然后导出 sum 中使用的最后一个值的地址或 最好是让自动过滤器选择所有这些值整行并删除它们。 我猜VBA可以做到这一点。 谢谢你
【问题讨论】:
Option Explicit
Sub deleteRows()
Const sFirst As String = "A1"
Const sSum As Double = 20
Dim rg As Range
With Range(sFirst)
Dim lCell As Range
Set lCell = .Resize(.Worksheet.Rows.Count - .Row + 1) _
.Find("*", , xlFormulas, , , xlPrevious)
If lCell Is Nothing Then Exit Sub
Set rg = .Resize(lCell.Row - .Row + 1)
End With
Dim rCount As Long: rCount = rg.Rows.Count
Dim Data As Variant
If rCount = 1 Then
ReDim Data(1 To 1, 1 To 1): Data(1, 1) = rg.Value
Else
Data = rg.Value
End If
Dim cSum As Double
Dim r As Long
For r = 1 To rCount
If IsNumeric(Data(r, 1)) Then
cSum = cSum + Data(r, 1)
If cSum > sSum Then
Exit For
End If
End If
Next r
If r > 1 Then
rg.EntireRow.Resize(r - 1).Delete
End If
End Sub
【讨论】: