2016-06-15 3 views
2

Я пытаюсь использовать конструкцию IF(And() в формуле R1C1, чтобы заполнить большой диапазон ячеек. Для этого я создал цикл, который создает строковую переменную для значение_если_истина части формулы, однако, когда формула работает клетки перечисляет диапазон вместо содержимого переменнойString Variable для Value_If_True возвращает диапазон строк в рабочем листе

v = 1 
cs = 71 
ce = 87 
For c = cs To ce Step 2 
    r = "R" & v 
    drop.Range(Cells(8, c), Cells(LR, c)).FormulaR1C1 = "=IF(AND(RC3>=RC[-18],RC3<=RC[-17])," & r & ","""")" 
    v = v + 1 
Next 

Я объявляю переменные в верхняя часть субпоказа (r - строка). Это то, что появляется клетка, как после того, как запустить макрос:

=IF(AND($C8>=BA8,$C8<=BB8),8:8,"") 

На рисунке 8: 8 должен быть "R1".

+0

'R1' изменится на 1: 1, а' R8' станет 8: 8. Вы выполняете итерацию v, поэтому каждый раз, когда он петли, вывод строки будет увеличиваться. Что вы хотите в качестве вывода, 'R1'? не строка, а фактическая строка? –

+0

Как насчет r.value? тем не менее, я думаю, вам нужно будет использовать что-то вроде косвенного здесь, в принципе значение вашей переменной - это R1, а не значение в ячейке RI. вы также можете попробовать - «&. Range (r) &» в формуле. – Lowpar

ответ

1

Я предполагаю, что вы хотите, чтобы буквальная строка "R1" была результатом If, но при отсутствии кавычек, она ссылается как ссылка на xlR1C1.

drop.Range(Cells(8, c), Cells(LR, c)).FormulaR1C1 = _ 
    "=IF(AND(RC3>=RC[-18], RC3<=RC[-17]), """ & r & """, TEXT(,))" 

TEXT(,) просто легкий способ сказать "" без необходимости писать """".

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