2016-10-25 5 views
0

Допустим, у меня есть 2 колонки (следующая таблица включает в себя результат)VBA работает сумма

Product ID Price Average 
1    4  5 
1    4  5 
1    7  5 
2    3  3 
2    3  3 
3    9  9 

Я хочу, чтобы иметь возможность написать код VBA для перебора строк идентификаторов продуктов и создать 3-ю колонку который имеет средние цены.

Я предполагаю, что оператор For будет работать, но как определить временные переменные для хранения каждого идентификатора?

Спасибо!

+0

вы можете использовать 'WorksheetFunction.AverageIf()' или просто с помощью 'Оценка («= СРЕСЛИ (»& SomethingHere &«) ")', и вам не нужно будет хранить каждый идентификатор в переменной. Кроме того, вы можете применить формулу ко всему диапазону и удалить формулы после. – Vasily

+2

Есть ли специальная причина для установки цикла VBA, когда AVERAGEIF может делать то, что вы хотите в Excel? –

ответ

1

Как сказал Василий и Л. Датч, функция AVERAGEIF() - это все, что вам нужно. Если вы хотите, чтобы петли его через все клетки, вы можете использовать Do While цикл, как это:

Sub avg() 
Dim i As Integer 
i = 2 
Do While Range("A" & i).Value <> "" 
    Range("C" & i).FormulaR1C1 = "=AVERAGEIF(C1,RC1,C2)" 
    i = i + 1 
Loop 
End Sub 
Смежные вопросы