我正在尝试根据所选选项更改单元格引用。我使用了两种方法。他们俩都没用。你能查一下我的代码吗?我有" Option Explicit"在我的代码上。我只是没有在这里复制它。
'first method
Function LM(n As Integer) As Long
LM = ThisWorkbook.Worksheets("M").Range("a4").Offset(0, 6 + n).Column
End Function
Range("A4").Select
ActiveCell.End(xlToRight).Offset(-2, 1).Value = "Qtr"
Do While ActiveCell.Value <> ""
ActiveCell.End(xlToRight).Offset(0, 1).Formula = _
"=IFERROR(M!R[4]C" & LM(n) & _
"+INDEX(A!R3C4:R418C27,MATCH(M!R2C,A!R2C4:R2C27,0)),0)"
ActiveCell.Offset(1, 0).Select
Loop
'Second option
If Option1 = true then n=6
Range("A4").Select
ActiveCell.End(xlToRight).Offset(-2, 1).Value = "Qtr"
Do While ActiveCell.Value <> ""
ActiveCell.End(xlToRight).Offset(0, 1).Formula = _
"=IFERROR(M!R[4]C" & n & _
"+INDEX(A!R3C4:R418C27,MATCH(M!R2C,A!R2C4:R2C27,0)),0)"
ActiveCell.Offset(1, 0).Select
Loop
谢谢
答案 0 :(得分:0)
您需要.FormulaR1C1
使用R[]C[]
公式赋值,即。
`ActiveCell.End(xlToRight).Offset(0, 1).FormulaR1C1 = _
"=IFERROR(M!R[4]C" & LM(n) & _
"+INDEX(A!R3C4:R418C27,MATCH(M!R2C,A!R2C4:R2C27,0)),0)"`
在你的评论中,你说n
总是6,但你的代码中有这一行
If Option1 = true then n=6
检查Option1
程序,或向我们展示那些。
函数LM()
似乎只是通过6+n
的偏移[A4]
列找到列号。它是不必要的,因为它只是4+6+n
。
希望这有帮助。