2015-08-09 3 views
1

У меня есть следующие VBA, который работает отличноExcel VBA добавить параметры Макс диапазон

Worksheets(d).Cells(x, 5).Value = Application.WorksheetFunction.Max(Range("Data!E3:E7")) 

Этот метод должен быть вложен в FOR функции, такие как

For i = 3 To j 
     Worksheets(d).Cells(x, 5).Value = Application.WorksheetFunction.Max(Range("Data!E3:E5")) 
     x = x + 1 
    Next 

Как я могу разобрать E3 и E7 для определения параметров на основе i, что означает

E3 = "E" + i 
E5 = "E" + i + 2 

полный пример того, что я пытаюсь:

For i = 3 To j 
     Worksheets(d).Cells(x, 5).Value = Application.WorksheetFunction.Max(Range("Data!E" + i + ":E" + i+2 +")) 
     x = x + 1 
    Next 

ответ

1

Попробуйте

Sheets("Data").Range("E" & i & ":E" & (i + 2)) 

& лучше, чем + в комбинации данных различных типов в строку. Также - Range является потомком WorkSheet - так что вы должны пройти через соответствующий Sheet объект

+0

@ пользователь829174 I t должен работать сейчас. Моя первая попытка сосредоточилась на конкатенации и пренебрегла осложнениями листа. Вторая версия имела опечатку, которая была исправлена. Я просто проверил его в книге с листом с именем «Данные» и с i = 3 правильно дал мне максимум «Data! E3: E5» –

0

Заметим, что вы можете сделать это непосредственно без петли

как формула

Worksheets(d).Cells(x, 5).Resize(J - 3 + 1, 1).FormulaR1C1 = "=MAX(Data!R[1]C5:R[" & J - 3 + 1 & "]C5)" 

В качестве значений

Worksheets(d).Cells(x, 5).Resize(J - 3 + 1, 1).Value = "=MAX(Data!R[1]C5:R[" & J - 3 + 1 & "]C5)" 
Смежные вопросы