• 締切済み

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)となるにはどうすれば良いのか教えて ください。

みんなの回答

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

この様な場合、 range("D" & 行数 ).FomulaR1C1="=IF(RC[-3]="","",RC[-2])"とやった方が楽です。1行毎でなく、範囲全体に一度に設定する事も可能です。 R1C1形式の式を得るには、普通に式を入力後、ツール/オプションでR1C1参照形式に変更すると、目的の式もR1C1形式になりますので、それを編集状態にして、頭にシングルクォーテーションをつけて文字列にしてやると良いです。こうすると、R1C1参照を解除しても、式は保存されます。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

下記のようにしてください。 Range("D" & 行数).Formula = "=IF(B" & 行数 & "="""","""",C" & 行数 & ")" 余談ですが、フィル入力した方が簡単ではないでしょうか。 ActiveSheet.Range("D1:D10").Formula = "=IF(B1="""","""",C1)"

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

Range("D" & 行数).Fomula = " =IF(B" & 行数 & "="""","""",C" & 行数 & ")"

関連するQ&A