2015-12-16 4 views
0

У меня есть серия предложений IF/ELSE, чтобы узнать, соответствуют ли элементы одной из трех категорий. Если элемент не подходит ни к одному из них, его поле категории должно просто читать «ВЫБРАТЬ».Как установить формулу в ячейке с использованием нотации R1C1 из переменных?

Теперь, с простыми текстовыми строками, он отлично работает. Но я также хочу включить простую формулу (как и в большинстве других аутопопулированных полей на листе), чтобы очистить поле, если оно находится на пустой строке. На основе кода, который я использовал в других случаях, я хотел бы установить формулу ячейки для

=IF(ISBLANK($A2, "", "SELECT") 

(... где сама клетка B2)

Проблема заключается в том, клетка смотреть по желанию будет зависеть от того, на какой линии он включен; A2, A3, A4 и т. Д. Номер столбца остается постоянным, но номер строки определяется переменной iImportCounter.

Я пытался как .Value и .Formula, как """ и Chr(34), и она до сих пор, кажется, не работает. Полный код для этой строки в ее нынешнем виде:

Else: 
    wsCalc.Cells(iImportCounter, 3).Formula = "=IF(ISBLANK($" & Application.ConvertFormula(Cells(iImportCounter, 2), xlA1) & ", " & Chr(34) & Chr(34) & ", " & Chr(34) & "SELECT" & Chr(34) & ")" 

Есть ли что-то ужасно очевидное, что мне не хватает?

Я видел комментарии в другом месте, что тот факт, что это в модуле, а не на основе листа, может сделать некоторые из этих ошибок, но я не уверен, что и как.

ответ

1

wsCalc Предполагая, что является ссылкой на диапазон ячеек:

wscalc.FormulaR1C1 = "=IF(ISBLANK(RC1),"""",""SELECT"")" 

В качестве рабочего примера:

Sub Test() 

    ThisWorkbook.Worksheets("Sheet1").Range("B1:B10").FormulaR1C1 = "=IF(ISBLANK(RC1),"""",""SELECT"")" 

End Sub 
+0

Это сделало трюк, спасибо! –

3

Это зависит от того, что iImportCounter начинается с. Если (строка 3 в B3), то формула будет,

with wsCalc.Cells(iImportCounter, 3) 
    .FormulaR1C1 = "=IF(ISBLANK(R[-1]C1), """", ""SELECT"") 
end with 

R в RC1 означает ту же строку, что вы ставите формулу на так что если вы добавив строку 2, и вы хотите ссылаться на A2, тогда R - это все, что вам нужно. Если формула переходит в B3, вам необходимо ссылаться на текущую строку минус 1 с помощью R [-1] C1.

С1 в RC1 означает «запертый» (абсолютной) столбец А (столбец первого). Это не кажется абсолютно необходимым, поскольку формула не перемещается вбок.

+0

Ах, хороший улов - извините, все будет в одной строке, и формула (в этом примере) будет идти в B2. Исправлено сейчас, спасибо. И код там работает красиво. –

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