2015-08-24 3 views
0

Если я хочу, чтобы этот код был в цикле (как он есть), пока не вычисляется больше, но всегда имеет статическое значение (C1), которое не продолжается, C2, C3 и т. Д., Не добавляя значения в формула, это возможно? Проверьте мой код и мое объяснение.Диапазоны умножения

Thisworkbook.Sheets(1).Range("A1") = "=--(B1 >= C1) * --(B1 <= C2)" 

Этот цикл, пока ничего больше можно вычислить, так что следующая строка выглядеть следующим образом

Thisworkbook.Sheets(1).Range("A2") = "=--(B2 >= C2) * --(B2 <= C3)" 

я хочу второй ряд, чтобы быть

Thisworkbook.Sheets(1).Range("A2") = "=--(B2 >= C1) * --(B2 <= C2)" 

и так далее, так что С1 и C2 не должен быть изменен вообще, могу я это сделать ??

+1

Вам не нужны двойные унары (или двойные минусы или '-'). Умножение (или любая операция математики) достаточно для преобразования логического значения в 1 или 0. – Jeeped

+0

Идея состоит в том, что она должна их преобразовывать до 1 или 0. но знак $ не работал: / – angular2neewbie

ответ

0

Чтобы заполнить диапазон с формулами, вы можете попробовать любой из них:

Sheet1.Range("A1:A2").Formula = "=(B$1:B$2 >= C$1) * (B$1:B$2 <= C$2)" 
Sheet1.Range("A1:A2").FormulaR1C1 = "= (RC[1] >= R1C[2]) * (RC[1] <= R2C[2])" 

Первый использует неявное пересечение, а вторые ссылки R1C1. Обычно ссылки R1C1 более удобны в обслуживании и используют меньший диапазон для зависимостей расчета.

Если вы хотите только значения, которые вы можете попробовать вместо:

Sheet1.[A1:A2] = Sheet1.[(B1:B2 >= C1) * (B1:B2 <= C2)] 

Примечание: Sheet1 здесь используется для краткости вместо ThisWorkbook.Sheets(1) быть Кодовое по умолчанию листа.

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