使用vba公式中的单元格地址

我试图在IF公式中使用单元格地址,我得到一个错误消息。 我将AvgCell / StdCell定义为string,而我的IF函数不会如何读取它

这里是代码:

Dim AvgCell As String ActiveCell.Formula = "=AVERAGE(M" & StartRow & ":M" & myRow - 1 & ")" AvgCell = Cells(myRow + 1, 14).Address Cells(k, 14).FormulaR1C1 = "=IF(RC[-1]>" & AvgCell & " + " & StdCell & ",1,0)" 

这可能是因为你混合了A1和RC地址引用。

尝试改变这个:

 AvgCell = Cells(myRow + 1, 14).Address(ReferenceStyle:=xlR1C1) 

也可以用来设置StdCell的地址

我debugging了你的问题:

你的问题是你正在返回一个地址“$ x $ y”。

所以

单元格(1,14).FormulaR1C1 = IF(RC [-1]> $ N $ 1 +,1,0)

不起作用CELLS()抛出错误replace与RANGE()

我不相信Cells()可以工作 – 我进行了一些基本的debugging,发现你可以起诉Range()。 这里是垃圾代码作为例子。 这不会是你的最终答案(我没有看到你所有的代码),但你可以使用你的方法

 ActiveCell.Formula = "=AVERAGE(M" & StartRow & ":M" & myRow - 1 & ")" 

并使用相同的思维结构来使RANGE()适合您的需求。

 Sub test() Dim AvgCell As String AvgCell = "" ActiveCell.Formula = "=AVERAGE(M" & StartRow & ":M" & myRow - 1 & ")" AvgCell = Cells(myRow + 1, 14).Address Debug.Print AvgCell AvgCell = "=IF(" & " range(AvgCell) & " > " & AvgCell & " + " " Cells(1, 14) = AvgCell Debug.Print AvgCell End Sub