2015-07-30 3 views
1

Я новичок в VBA. Я пытаюсь использовать цикл для выполнения функции sumif. Я хочу, чтобы функция меняла свои критерии sum_range по мере ее прохождения.VBA SUMIF Изменение функции sum_ranges критерии

Я попытался, используя следующий код первого:

While cls <= num_cols 
    While rws <= num_rows 
     Cells(rws, cls).Value = "=SUMIF('BW YTD - Act&Plan'!$C:$C,A" & rws & ",'BW YTD - Act&Plan'!D:D)" 
     rws = rws + 1 
    Wend 
    rws = 7 
    cls = cls + 1 
Wend 

Как вы заметили, в коде, суммарный_диапазон является D: D. Я хочу, чтобы иметь возможность прокручивать и менять его на E: E в следующий раз и продолжать, пока не достигнет последнего столбца, который у меня есть.

я жёстко его следующим образом:

While rws <= num_rows 
    Cells(rws, 2).Value = "=SUMIF('BW YTD - Act&Plan'!$C:$C,A" & rws & ",'BW YTD - Act&Plan'!D:D)" 
    rws = rws + 1 
Wend 
rws = 7 
While rws <= num_rows 
    Cells(rws, 3).Value = "=SUMIF('BW YTD - Act&Plan'!$C:$C,A" & rws & ",'BW YTD - Act&Plan'!E:E)" 
    rws = rws + 1 
Wend 
rws = 7 
While rws <= num_rows 
    Cells(rws, 4).Value = "=SUMIF('BW YTD - Act&Plan'!$C:$C,A" & rws & ",'BW YTD - Act&Plan'!F:F)" 
    rws = rws + 1 
Wend 
rws = 7 
While rws <= num_rows 
    Cells(rws, 5).Value = "=SUMIF('BW YTD - Act&Plan'!$C:$C,A" & rws & ",'BW YTD - Act&Plan'!G:G)" 
    rws = rws + 1 
Wend 
rws = 7 

Любые советы будут оценены.

ответ

1

Вы можете использовать цикл for и функцию chr() преобразовать целое число в букву. (cls + 64 + 2) позволяет вам указать cls = 2 для «B», а затем добавление 64 получает вас 66, который является символом ASCII для «B». Для того, чтобы компенсировать таким образом, если cls = 2 даст вам «D», просто добавьте дополнительный 2. (Вы, конечно, можете комбинировать его, так что это chr(cls + 66), но я хотел бы показать, почему это было бы 66.)

While cls <= num_cols 
    While rws <= num_rows 
     Cells(rws, cls).value = "=SUMIF('BW YTD - Act&Plan'!$C:$C,A" & rws & _ 
       ",'BW YTD - Act&Plan'!" & Chr(cls + 64 + 2) & ":" & Chr(cls + 64 + 2) & ")" 
     rws = rws + 1 
    Wend 
    rws = 7 
Wend 
+0

Большое спасибо , Это очень хорошо работает для меня. –

Смежные вопросы