|
楼主 |
发表于 2023-5-17 14:22
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
Sub AutoFillAverage()
Dim lastRow As Long
Dim lastCol As Long
Dim i As Long
Dim F As Range
Dim E As Range
' 设置 F 列和 E 列的范围
Set F = Range("F1:F" & Range("F" & Rows.Count).End(xlUp).Row)
Set E = Range("E1:E" & Range("E" & Rows.Count).End(xlUp).Row)
' 检查 F 列中是否有值为 "a" 的行
For i = 1 To UBound(F)
If F(i, 1) = "a" Then
' 在 E 列中查找第一个大于 0 的单元格
For j = 1 To E.Cells(1, 1).End(xlUp).Row
If E(j, 1) > 0 Then
' 更新 E(j+1, 1) 和 E(j+2, 1) 的值
E(j+1, 1) = E(j, 1)
E(j+2, 1) = E(j, 1)
' 将 E(j+1, 1) 到 E(j+2, 1) 之间的单元格公式设置为 SUM(R[-2]C[-1]:R[2]C[-1])/5
E(j+1, 2) = "=SUM(R[-2]C[-1]:R[2]C[-1])/5"
' 更新 E(j+3, 1) 的值
E(j+3, 1) = Application.Average(Range("D1:D" & LastRow))
End If
Next j
End If
Next i
' 更新整个表格的 E 列
E.EntireColumn.AutoFill Destination:=E.Offset(1, 0), Type:=xlFillDefault
' 隐藏公式
Application.DisplayFormulas = False
End Sub
|
|