Excel VBA 如何筛选后,求和

文章目录

  • 筛选
  • 删选后求和

筛选

Private Sub TextBox2_Change()
If TextBox2.Text = "" Then
    AutoFilterMode = False
Else
ActiveSheet.Range("$A$1:$V$1000").AutoFilter Field:=6, Criteria1:="*" & TextBox2.Text & "*", visibledropdown:=False
ActiveSheet.Range("I1").AutoFilter 9, visibledropdown:=False '设置不显示下拉框,是I1的位置,但9是从A1开始数到I1的9

End If
End Sub

删选后求和

表示对I2到I801行,列不变得,删选后得数据进行求和。

SUBTOTAL的109参数表示求和

R[1]C:R[800]C是R1C1样式。。
你代码中先选择了I1
Range(“I1”).Select
下面的代码
ActiveCell.FormulaR1C1 = “=SUBTOTAL(109,R[1]C:R[800]C)”
表示在I1里面写入公式:
“=SUBTOTAL(109,R[1]C:R[800]C)”
R[1]C:R[800]C
中的R[1]C 表示相对于I1向下偏移1行,列不变,即I2,
R[800]C 表示相对于DI1向下偏移800行,列不变,I801
所以呢 "=SUBTOTAL(109,R[1]C:R[800]C)"就等于=SUBTOTAL(109,I2:I800)
余下的类推即可

Sub 求和_Click()
Range("I1").Select
ActiveCell.FormulaR1C1 = "=SUBTOTAL(109,R[1]C:R[800]C)"

End Sub

你可能感兴趣的:(vba,excel)