如何在variables中使用R1C1表示法在单元格中设置公式?
我有一系列IF / ELSE子句来查看项目是否适合三类之一。 如果一个项目不适合其中的任何一个,它的类别字段应该简单地阅读“select”。
现在,用简单的文本string,它工作正常。 但是我也想包括一个简单的公式(如在工作表中的其他大部分自动填充字段中),以便在空白行中空白该字段。 根据我在其他情况下使用的代码,我想将单元格的公式设置为
=IF(ISBLANK($A2, "", "SELECT")
(…细胞本身是B2)
问题是,要看的单元将取决于它所在的线路; A2,A3,A4等。 列号保持不变,但行号由variablesiImportCounter
定义。
我已经尝试了.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) & ")"
有什么特别明显的我失踪了吗?
我在其他地方看到过这样一个事实:它在一个模块而不是一个基于表单的macros中可能会导致一些代码失效,但是我不确定是什么或者如何。
假设wsCalc
是对一系列单元格的引用:
wscalc.FormulaR1C1 = "=IF(ISBLANK(RC1),"""",""SELECT"")"
作为一个工作的例子:
Sub Test() ThisWorkbook.Worksheets("Sheet1").Range("B1:B10").FormulaR1C1 = "=IF(ISBLANK(RC1),"""",""SELECT"")" End Sub
这取决于iImportCounter
启动。 如果是3 (B3中的第3行 ),则公式将是,
with wsCalc.Cells(iImportCounter, 3) .FormulaR1C1 = "=IF(ISBLANK(R[-1]C1), """", ""SELECT"") end with
RC1中的R意味着你把公式放在同一行,所以如果你把第2行放在第二行,而你想引用A2,那么R就是你所需要的。 如果公式进入B3,则需要用R [-1] C1引用当前行减1。
RC1中的C1表示“locking”( 绝对 )列A( 第一列)。 这似乎不是绝对必要的,因为该公式不会横向传播。