- 締切済み
Excel関数をマクロで入力するには?
例えば次のような表があります。 A B C D 1 金子 横浜 150 150 2 前田 200 3 石田 千葉 100 100 セルD1には =IF(B1="","",C1) セルD2には =IF(B2="","",C2) セルD3には =IF(B3="","",C3) このD列にマクロにてD1から順番に上の式を書込たいのですが、 ここでは、初めからできている式をコピーするのではなく、あく まで上の式を書き込みたいのです。そこで次のようなマクロで やってみましたがうまくいきません。どうマクロを記述したら 良いのでしょうか。 range("D" & 行数 ).Fomula= " =IF(B" & 行数 & "="","",C" & 行数 & ")" こうすると結果はD1にFALSEと表示され入力された式をみてみると =IF(B1=",",B1)となってしまいます。""が"になってしまい、 きちんと=IF(B1="","",C1)となるにはどうすれば良いのか教えて ください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- mitarashi
- ベストアンサー率59% (574/965)
この様な場合、 range("D" & 行数 ).FomulaR1C1="=IF(RC[-3]="","",RC[-2])"とやった方が楽です。1行毎でなく、範囲全体に一度に設定する事も可能です。 R1C1形式の式を得るには、普通に式を入力後、ツール/オプションでR1C1参照形式に変更すると、目的の式もR1C1形式になりますので、それを編集状態にして、頭にシングルクォーテーションをつけて文字列にしてやると良いです。こうすると、R1C1参照を解除しても、式は保存されます。
- xls88
- ベストアンサー率56% (669/1189)
下記のようにしてください。 Range("D" & 行数).Formula = "=IF(B" & 行数 & "="""","""",C" & 行数 & ")" 余談ですが、フィル入力した方が簡単ではないでしょうか。 ActiveSheet.Range("D1:D10").Formula = "=IF(B1="""","""",C1)"
- hana-hana3
- ベストアンサー率31% (4940/15541)
Range("D" & 行数).Fomula = " =IF(B" & 行数 & "="""","""",C" & 行数 & ")"