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

如何在VBA中对多维数组指定列的所有行求和(无需循环)

VBA数组指定列求和问题

我有一个维度可变的数组,第11列是需要汇总的金额数据,示例如下:

MyArray(1,11) = 2000 + MyArray(2,11) = 1000 + MyArray(3,11) = 3000 = 6000

想请教有没有不用遍历数组,就能对指定列的所有行求和的方法?我试了下面这段代码但没成功:

With Application.WorksheetFunction
        
OppAmount = .Sum(.Index(CurDealArr, DealsTable.ListColumns("AMOUNT").Index))
    
End With

问题分析与解决方案

你的代码出错是因为WorksheetFunction.Index处理二维数组时参数顺序错误——要提取整列,需将行参数设为0(或省略),同时把列参数放在第二个位置。

正确写法1:WorksheetFunction.Index + Sum

调整Index参数,明确指定提取目标整列:

With Application.WorksheetFunction
    ' 行参数设为0表示提取整列,第二个参数为目标列的索引
    OppAmount = .Sum(.Index(CurDealArr, 0, DealsTable.ListColumns("AMOUNT").Index))
End With

正确写法2:直接用Application.Sum配合数组切片

VBA中Application.Sum支持直接对数组指定列求和,写法更简洁:

OppAmount = Application.Sum(Application.Index(CurDealArr, 0, DealsTable.ListColumns("AMOUNT").Index))

注意事项

  • 确保你的数组是二维数组(即使只有一行/一列,也要保持二维结构),一维数组需先转换维度才能用此方法。
  • 数组中若存在空值,Sum会自动忽略;但如果有非数值类型数据,会触发错误,需提前处理数据类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:12:10