2016-03-22 14 views
1

Ben IF ve DÜŞEYARA işlevleri ve birkaç değişkenleri içeren bir R1C1 formülü:Range.Address özellik çalışmaz düzgün

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

: Her hücrede aşağıdaki sonucu elde

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 

Sorun, B:E yerine B:(E)'a dönüştürülen vlpRange.Address(0, 0) numaralı makaledir.

Bu neden oluyor ve nasıl düzeltebilirim?

+1

Benim tahmin için

vlpRange.Address(0, 0) 

takas çalışın. –

cevap

2

dolayısıyla nedeni işlerin altına cevabını, bir R1C1 formülü belirli bir adresi kullanmaya çalışıyoruz neden olarak

vlpRange.Address(ReferenceStyle:=xlR1C1) 
+0

Teşekkürler, Bu yardımcı oldu, ama ben $ B: $ E 'aldım. Bunun neden olduğunu hala anlayamıyorum. –

+0

Evet, birkaç kez denedim ve vlpRange.Address'in (0, 0) diğer tüm kullanımları normal B: E'ye dönüşüyor, ki bu oldukça garip. Eğer sabit sütunları düşünmüyorsanız, yedek size yardımcı olabilir, ancak bir dakikanız olduğunda daha iyi bir şey bulmaya çalışacağım ... –

+1

Birkaç denemeden sonra Scott'un doğru olduğuna inanıyorum (orijinal sorunuza yorum olarak). B: $ E referansını birkaç kez referans olarak alabildim, ama her zaman mutlak referans olmadan denedim ya "B: (E)" olsun ya da bir noktaya başvurmak zorundasın ve farklı sütunlar almayı riske atıyorsun. sadece normal "B: E" değerini koymak mümkün değildir. Formülü G sütununa koyduğumda vlpRange.Address (0, 0, xlR1C1, RelativeTo: = Range ("G: G")) kullanarak $ B işaretleri olmadan "B: E" aldım. –

İlgili konular