Страницы: 1
RSS
Макрос по суммированию ячеек (входящих в объектную переменную Rang)
 
Код
For t = 1 To 4 
 For i = 1 To 103 
 If Rang(i, 1) = agency(t, 1) Then 

 Paym = Paym + (Rang(i, 14) + Rang(i, 15)) 
 'VAR = VAR + (Rang(i, 9) + Rang(i, 14)) 

 Select Case Rang(i, 9) 
 Case 0 
 Rang(i, 9) = Rang(i, 8 ) '------------------------> на эту строчку просьба обратить внимание 
End Select 
 VAR = VAR + (Rang(i, 9) + Rang(i, 14)) 

End If 
Next i 

Меняю условия и расчет не верный :
Код
2)For t = 1 To 4 
 For i = 1 To 103 
 If Rang(i, 1) = agency(t, 1) Then 

 Paym = Paym + (Rang(i, 14) + Rang(i, 15)) 
 'VAR = VAR + (Rang(i, 9) + Rang(i, 14)) 

 Select Case Rang(i, 9) 
 Case 0 
 VAR = VAR + Rang(i, 8 ) 
 Case Else 
 VAR = VAR + (Rang(i, 9) + Rang(i, 14)) 
End Select 
End If 
Next i 

Делаю макрос который по строкам считает сумму двух показателей VAR и Paym. Проблемы возникают только с VAR. Первый вариант макроса плох тем что вносит изменения в таблицу, из-за того что переменная Rang - это диапазон ячеек. Второй не вносит изменений но считает не правильно вопрос почему так?
Должно быть так: Если Rang(i,9)=0 то VAR=VAR+ Rang(i,8 ) Если Rang(i,9)<>0 то VAR = VAR + (Rang(i, 9) + Rang(i, 14)).
Спасибо всем!
Изменено: xlankasterx - 28.02.2017 16:03:56
 
Код
 VAR = VAR + (Rang(i, 9) + Rang(i, 14))

В первом варианте эта строка считает независимо от значения в Rang(i, 9)
Во втором варианте при Rang(i, 9)=0
Код
 Var = Var + Rang(i, 8)

А куда делось значение Rang(i, 14)?
 
Кнопка цитирования не для ответа.
Вам за каждым пунктом правил делать замечание или все-таки ознакомитесь с правилами полностью?
[МОДЕРАТОР]

Если Rang(i,9)=0 то суммировать надо без Rang(i,14).
Насколько я понял из вашего ответа проблема во втором варианте в этом участке кода:
Код
Select Case Rang(i, 9) 
 Case 0 
 VAR = VAR + Rang(i, 8 ) 
 Case Else
 VAR = VAR + (Rang(i, 9) + Rang(i, 14)) 
End Select

Но разве условие Case Else не означает, что если Rang(i,9)<>0 то считаем по формуле:  VAR = VAR + (Rang(i, 9) + Rang(i, 14)) ?

Спасибо за помощь!
Изменено: xlankasterx - 28.02.2017 16:32:36
 
Цитата
если Rang(i,9)<>0 то считаем по формуле: VAR = VAR + (Rang(i, 9) + Rang(i, 14))
Совершенно правильно.

Цитата
Если Rang(i,9)=0 то суммировать надо без Rang(i,14)
Ошибка в первом варианте. Сначала
Код
Rang(i, 9) = Rang(i, 8 )

Потом выходим из Select и добавляем
Код
VAR = VAR + (Rang(i, 9) + Rang(i, 14))
 
Цитата
vikttur написал:
Ошибка в первом варианте. Сначала
Код ? 1Rang(i, 9) = Rang(i, 8 )
Потом выходим из Select и добавляем
Код ? 1VAR = VAR + (Rang(i, 9) + Rang(i, 14))

Чего-то я недопонимаю. Первый вариант считает правильно, это точно. в нем ошибки нет.
Но он вносит изменения в ячейки, этой строкой кода:
Код
  Rang(i, 9) = Rang(i, 8 )   


Когда я пытаюсь заменить эту строку, например этой формулой:

Код
VAR=VAR+ iif(Rang(i,9)=0,Rang(i,8 ),Rang(i,9))+Rang(i,14)

То получаю погрешность в расчете.

А мне нужно получить такой же результат расчета, без внесения изменений в ячейку Rang(i,9).
Для этого надо заменить строку кода:
Код
 Rang(i, 9) = Rang(i, 8 ) 

Но вот на что её заменить мне не ясно.
Изменено: xlankasterx - 01.03.2017 10:04:22
Страницы: 1
Наверх