2016-03-22 44 views
1

我有一个R1C1公式,它由IF和VLOOKUP函数和几个变量:Range.Address财产不能正常工作

Sub example() 

    Set vlpRange = wsRef.Range("B:E") 

    '[some code...] 

    newColumn.FormulaR1C1 = "=IF(MID(RC[-17],14,3)=""LCO""," _ 
    & """LCO"",VLOOKUP(RC[-10],'[" & wbRef.Name & "]" & _ 
    wsRef.Name & "'!" & vlpRange.Address(0, 0) & "," & vlpColIndex & ",0))" 

    '[some code...] 

End Sub 

我得到在每个单元下面的结果:

=IF(MID(F2,14,3)="LCO","LCO",VLOOKUP(M2,'[SPS Product groups.xlsx]Sheet1'!B:(E),4,0))

问题出在vlpRange.Address(0, 0),它被转换成B:(E),而不是B:E

为什么会发生这种情况,我该如何解决?

+1

我的猜测,为什么,你正在尝试R1C1公式中使用一个特定的地址,因此下面的原因作品答案。 –

回答

2

尝试换

vlpRange.Address(0, 0) 

vlpRange.Address(ReferenceStyle:=xlR1C1) 
+0

谢谢,它有帮助,但我得到了'$ B:$ E'。我仍然不明白为什么会发生这种情况。 –

+0

是的,我尝试了几次,vlpRange.Address(0,0)的所有其他用途都返回正常的B:E,这很奇怪。如果你不介意固定列的替换可能会对你有帮助,但是当我有一分钟的时候我会尽力找到更好的东西...... –

+1

所以经过几次尝试,我相信斯科特是正确的(在你对原始问题的评论中)。我可以多次获得绝对引用$ B:$ E,但是每次我尝试没有绝对引用时,您都会得到“B:(E)”,或者您必须将其引用到某个点,并有可能获得不同的列,这是不可能只是放入正常的“B:E”值。当我将公式添加到列G时,我使用vlpRange.Address(0,0,xlR1C1,RelativeTo:= Range(“G:G”))得到没有$符号的“B:E”。 –