循环遍历表列并将最大值或最小值存储在数组变量中

时间:2015-03-23 16:06:54

标签: arrays excel vba excel-vba listobject

我正在尝试使用VBA遍历excel中的表,并将每列的最大值存储在数组变量中,以便以后在程序中使用。

我采用了许多与下面的代码段类似的方法但没有成功。供参考:mainTable是前面在脚本中定义的Public ListObject变量,mainCols是一个Pubic Long变量,也是之前定义的变量,它存储mainTable的宽度:

Dim maxVals() As Long
ReDim maxVals(mainCols)

For x = 0 To mainCols - 1
maxVals(x) = mainTable.ListColumns(x + 1).TotalsCalculation = xlTotalsCalculationMax
Next x

上面的代码执行时没有错误,但始终返回0

重要的是,我不对列/表位置进行硬编码,以便用户可以复制/粘贴不同维度的数据集并运行脚本而不会出错。此外,假设用户可以使用他们想要的任何列标题在数据集上运行此操作。

1 个答案:

答案 0 :(得分:0)

您的代码只是更改了表格总计行中使用的计算 - 它实际上并没有返回最大值。你可以使用:

Dim maxVals() As Long
ReDim maxVals(mainCols)

For x = 0 To mainCols - 1
maxVals(x) = WorksheetFunction.Max(mainTable.ListColumns(x + 1).Range)
Next x