2016-03-22 7 views
1

Ich habe eine R1C1 Formel, die von IF und SVERWEIS Funktionen und einige Variablen besteht:Range.Address Eigenschaft funktioniert nicht richtig

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 

ich folgendes Ergebnis in jeder Zelle:

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

Das Problem ist in vlpRange.Address(0, 0), die in B:(E) anstelle von B:E umgewandelt wird.

Warum passiert das und wie kann ich es beheben?

+1

Meine Vermutung zu tauschen, warum Sie versuchen, eine bestimmte Adresse in einem R1C1 Formel zu verwenden, daher auch der Grund, die Antwort unten funktioniert. –

Antwort

2

Versuchen

vlpRange.Address(0, 0) 

für

vlpRange.Address(ReferenceStyle:=xlR1C1) 
+0

Danke, es hat geholfen, aber ich habe '$ B: $ E'. Ich kann immer noch nicht verstehen, warum das passiert. –

+0

Ja, ich habe es auch einige Male versucht und alle anderen Verwendungen von vlpRange.Address (0, 0) kehren normal B: E zurück, was ziemlich merkwürdig ist. Wenn Ihnen die festen Spalten nichts ausmachen, könnte Ihnen der Ersatz helfen, aber ich werde versuchen, etwas besseres zu finden, wenn ich eine Minute habe ... –

+1

Also nach ein paar Versuchen glaube ich, dass Scott richtig ist (im Kommentar zu Ihrer ursprünglichen Frage). Ich konnte mehrmals die Referenz $ B: $ E erhalten, aber jedes Mal, wenn ich ohne absolute Referenz versuche, erhält man entweder "B: (E)" oder man muss auf einen Punkt verweisen und riskieren, unterschiedliche Spalten zu bekommen nicht möglich, einfach den normalen "B: E" -Wert einzugeben. Als ich die Formel in die Spalte G brachte, erhielt ich das "B: E" ohne $ -Zeichen mit vlpRange.Address (0, 0, xlR1C1, RelativeTo: = Range ("G: G")). –