You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA实现ASCII文件导入后自动计算列平均值需求

修改VBA导入宏以自动计算列平均值(D2至AJ2)

没问题,我帮你调整了原有VBA代码,添加了自动在D2到AJ2单元格生成对应列平均值公式的功能。下面是完整的修改后代码:

Sub Import()
 Dim FileToOpen As Variant
 Dim OpenBook As Workbook
 Dim NameOfWorkbook As String
 Dim arr As Variant
 Dim LastRow As Long
 Dim col As Integer
 
 Application.Calculation = xlCalculationManual
 Application.DisplayStatusBar = False
 Application.EnableEvents = False
 Application.ScreenUpdating = False
 Application.DisplayAlerts = False
 
 Sheets.Add(After:=ActiveSheet).Name = "Data1"
 NameOfWorkbook = ActiveSheet.Name
 
 'Step 1 Import the data
 FileToOpen = Application.GetOpenFilename(Title:="Import sensor report in ASCII format")
 If FileToOpen <> False Then
    Set OpenBook = Application.Workbooks.Open(FileToOpen)
    arr = OpenBook.Sheets(1).Range("A1").CurrentRegion
    RowCount = UBound(arr, 1)
    ColumnCount = UBound(arr, 2)
    ThisWorkbook.Sheets("Data1").Range("A1").Resize(RowCount, ColumnCount).Value = arr
    arr = OpenBook.Sheets(1).Range("A3").CurrentRegion
    RowCount = UBound(arr, 1)
    ColumnCount = UBound(arr, 2)
    ThisWorkbook.Sheets("Data1").Range("A3").Resize(RowCount, ColumnCount).Value = arr
    OpenBook.Close False
    
    ' 新增:计算D2到AJ2的平均值公式
    With ThisWorkbook.Sheets("Data1")
        ' 获取数据最后一行(以A列为基准,确保覆盖所有数据行)
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        
        ' 循环D列(第4列)到AJ列(第36列)
        For col = 4 To 36
            ' 为第2行对应列设置平均值公式,引用从第3行到最后一行的数据
            .Cells(2, col).Formula = "=AVERAGE(" & .Cells(3, col).Address(False, False) & ":" & .Cells(LastRow, col).Address(False, False) & ")"
        Next col
    End With
 End If
 
 Application.DisplayAlerts = True
 Application.ScreenUpdating = True
 Application.Calculation = xlCalculationAutomatic
 Application.DisplayStatusBar = True
 Application.EnableEvents = True
End Sub

关键改动说明:

  1. 新增变量:定义了LastRow(存储数据最后一行行号)和col(循环列号时使用)
  2. 动态获取最后一行:用.Cells(.Rows.Count, "A").End(xlUp).Row自动识别数据的最后一行,不管数据行数多少,公式都能精准引用到末尾
  3. 循环生成公式:从第4列(D列)到第36列(AJ列)遍历,给每个单元格设置AVERAGE公式,用Address(False, False)生成相对引用的地址(比如D3:D100),确保公式完全匹配对应列的数据范围
  4. 逻辑位置:把计算逻辑放在关闭源文件之后、恢复Excel系统设置之前,确保数据完全导入后再生成公式,避免出现引用错误

这样修改后,每次完成数据导入,D2到AJ2就会自动填充对应列的平均值公式啦。

内容的提问来源于stack exchange,提问作者Vaeaelen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 15:47:35