2015-03-23 4 views
0

Я пытаюсь выполнить цикл в excel с помощью VBA и сохранить максимальное значение каждого столбца в переменной массива для последующего использования в программе.Пронумеруйте столбцы таблицы и сохраните значения max или min в переменной массива

Я предпринял ряд подходов, подобных приведенному ниже фрагменту кода, без успеха. Для справки: 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

Важно, чтобы я не затруднял кодирование расположения столбцов/таблиц, чтобы пользователи могли копировать/вставлять набор данных разных размеров и запускать сценарий без ошибок. Кроме того, предположим, что пользователь может запустить это в наборе данных с любыми заголовками столбцов, которые они хотят.

ответ

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 
Смежные вопросы