2016-06-14 6 views
1

列Cのセルの値がTRUEの場合、列Bの対応する値を列AJの対応するセルにコピーする必要があります。IF機能(VBA内)

これは私がこれまで持っているものです。

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

私はマクロを実行すると、問題が発生します。次の文は、列AJのセルにコピーされます。 =IF(C:C=TRUE;B:(B);0)、私は次のよう期待 :私のミスがどこにある

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

誰かが、私に教えていただけますか?あなたが式にR1C1とA1型参照を混合している

おかげ

+1

'= IF(C2 = TRUE; B2; 0)'(1324行までコピー)を意味していませんか? – Jeeped

答えて

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

これは動作します!ありがとうございました! – Peter

+0

ようこそ。答えを受け入れたものとしてマークしてください。ありがとうございました – user3598756

0

B:BはR1C1リファレンスではありません。

あなたがしたい場合:

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

は、次に、あなたが使用する必要があります。

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

私はあなたが本当にしたい式ではないかもしれないと思われる、しかし、あなたはその問題に対処していません。

正しい式を得る1つの方法は、セルに本当に必要なものを入力し、cell.FormulaR1C1プロパティを調べて、その式が異なる表記法でどのように形成されているかを確認することです。

私はあなたが本当にしたいことによって作成されることを、あなたの説明から、容疑者:として、セルに、表示されるでしょうどの

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

=IF(C2=TRUE;B2;0) 

または

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

生産

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