2016-03-22 67 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」。 –