遍历 table 列并将最大值或最小值存储在数组变量中
Loop through table columns and store max or min values in array variable
我正在尝试使用 VBA 遍历 excel 中的 table 并将每列的最大值存储在数组变量中供以后在程序中使用。
我已经采用了多种类似于下面代码片段的方法,但都没有成功。作为参考: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
上面的代码执行没有错误,但总是returns 0
重要的是我没有对 columns/table 位置进行硬编码,以便用户可以 copy/paste 不同维度的数据集和 运行 脚本而不会出错。此外,假设用户可以 运行 在数据集上使用他们想要的任何列 headers。
您的代码只是更改了 table 的总计行中使用的计算 - 它实际上并不是 return 最大值。您可以使用:
Dim maxVals() As Long
ReDim maxVals(mainCols)
For x = 0 To mainCols - 1
maxVals(x) = WorksheetFunction.Max(mainTable.ListColumns(x + 1).Range)
Next x
我正在尝试使用 VBA 遍历 excel 中的 table 并将每列的最大值存储在数组变量中供以后在程序中使用。
我已经采用了多种类似于下面代码片段的方法,但都没有成功。作为参考: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
上面的代码执行没有错误,但总是returns 0
重要的是我没有对 columns/table 位置进行硬编码,以便用户可以 copy/paste 不同维度的数据集和 运行 脚本而不会出错。此外,假设用户可以 运行 在数据集上使用他们想要的任何列 headers。
您的代码只是更改了 table 的总计行中使用的计算 - 它实际上并不是 return 最大值。您可以使用:
Dim maxVals() As Long
ReDim maxVals(mainCols)
For x = 0 To mainCols - 1
maxVals(x) = WorksheetFunction.Max(mainTable.ListColumns(x + 1).Range)
Next x