2016-03-22 11 views
1

I持っIFとVLOOKUP関数といくつかの変数で構成されていR1C1式、:Range.Addressプロパティが動作しません正しく

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

:私は、各セルに以下の結果を得

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 

B:Eの代わりにB:(E)に変換されているvlpRange.Address(0, 0)に問題があります。

なぜこのようなことが起こりますか、どうすれば解決できますか?

+1

私の推測のため

vlpRange.Address(0, 0) 

を交換してください。 –

答えて

2

は、それゆえの理由著作下記の答えを、あなたはR1C1の式で特定のアドレスを使用しようとしている理由として

vlpRange.Address(ReferenceStyle:=xlR1C1) 
+0

ありがとう、それは助けたが、私は '$ B:$ E'を得た。私はまだこれがなぜ起こるのか理解できません。 –

+0

はい、私はそれも2,3回試してみましたが、vlpRange.Address(0、0)の他のすべての使用法は正常なB:Eを返します。これはかなり奇妙です。あなたが固定列を気にしていない場合は、交換があなたを助けるかもしれないが、私は分を持っているときに良いものを見つけることを試みるでしょう... –

+1

私はスコットが(あなたの元の質問へのコメントで)正しいことを信じています。私はAbolute Reference $ B:$ Eを何回か得ることができましたが、絶対参照をしないで試してみるたびに、 "B:(E)"を取得するか、あるポイントに参照して別のカラムを取得するリスクがあります。通常の「B:E」値を入れるだけでは不可能です。私は列Gに数​​式を入れていたときに、vlpRange.Address(0、0、xlR1C1、RelativeTo:= Range( "G:G"))を使って$記号なしの "B:E"を取得しました。 –

関連する問題