如何在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( 第一列)。 这似乎不是绝对必要的,因为该公式不会横向传播。