2016-06-14 10 views
1

Ich möchte die folgenden erstellen: Wenn eine Zelle in Spalte C den Wert TRUE enthält, sollte der entsprechende Wert in Spalte B in die entsprechende Zelle in Spalte AJ kopiert werden. DieseIF-Funktion in VBA

ist das, was ich bisher:

Range("AJ2").Select 
ActiveCell.FormulaR1C1 = "=IF(C[-33]=TRUE,B:B,0)" 
Range("AJ2").Select 
Selection.AutoFill Destination:=Range("AJ2:AJ1324") 

Das Problem tritt auf, wenn ich das Makro auszuführen. Die folgende Anweisung wird in den Zellen in der Spalte AJ kopiert: =IF(C:C=TRUE;B:(B);0), wo ich erwarten, dass die folgenden:

=IF(C:C=TRUE;B:B;0) 

Könnte jemand bitte mir sagen, wo mein Fehler ist?

Dank

+1

Meinst du nicht '= IF (C2 = TRUE; B2; 0)' (in Reihe 1324 kopiert)? – Jeeped

Antwort

0
ActiveCell.FormulaR1C1 = "=IF(C[-33]=TRUE,RC2,0)" 
+0

Das funktioniert! Vielen Dank! – Peter

+0

Sie sind willkommen. dann, bitte, markieren Sie die Antwort als akzeptiert. Danke – user3598756

0

Sie mischen R1C1 und Typ A1 Referenzen in der Formel. B:B ist keine R1C1-Referenz.

Wenn Sie wollen:

=IF(C:C=TRUE;B:B;0) 

Dann müssen Sie verwenden:

"=IF(C[-33]=TRUE,C[-34],0)" 

Ich vermute, dass nicht die Formel sein kann, Sie wirklich wollen, aber Sie haben nicht das Problem behoben.

Eine Methode, um die richtige Formel zu erhalten, besteht darin, das, was Sie wirklich wollen, in die Zelle einzugeben und dann die Eigenschaft cell.FormulaR1C1 zu untersuchen, um zu sehen, wie diese Formel in der verschiedenen Notation gebildet wird.

Ich vermute, aus Ihrer Beschreibung, dass das, was Sie wirklich würde wollen erstellt von:

"=IF(RC[-33]=TRUE,RC[-34],0)" 

, die in der Zelle würde zeigen, wie:

=IF(C2=TRUE;B2;0) 

oder

"=IF(RC3=TRUE,RC2,0)" 

produziert

=IF($C2=TRUE;$B2;0)