見出し画像

マクロルーティン#19(数式をコピーでいれる)

指定した範囲の先頭のセルの数式を範囲中にコピーする。

皆さんこんにちは。
今回は数式を一か所に入れてそれを含む指定した範囲全てに下方向にコピーするという書き方をご紹介します。

画像7

上の図のようなデータで、E列に合計金額を表示させたい。

◆目標
C列[金額]とD列[消費税]を足した合計金額が表示される数式をE列にいれる。

◆書くコード
まず、上の図のようにE2に数式「=C2+D2」を入れる書き方は
➡ Range("E2").Formula = "=C2+D2"

★値の場合は「.Value」、数式の場合は「.Formula」を使います。
そして右側「 "=C2+D2"」はセルに直接数式を入れるときと同じ書き方です。

画像2

★2行目にでてきた「.FillDown
直前に書かれた範囲「Range("E2:E10")」の中で一番上のE2セルをE10までコピーしてくれます。

画像4


画像5

・Range("E2").Formula = "=C2+D2"
このコードの書き方ですが、実は
・Range("E2") = "=C2+D2"
こう書いても、同じように数式をいれてくれます。"=C2+D2"というふうに「=」で始まっているのでマクロのほうで、「数式ねっ」と判断してくれるのです。
同じように
・Range("A2").Value = "ビタミン"
のような値を入力するコードも
・Range("A2") = "ビタミン"
このように書いてもマクロ側でダブルクォーテーションで囲まれているので「値ねっ」と判断してくれます。

◆まとめ

.Formula ➡ 数式を入力するときのプロパティ
.FillDown ➡ ピリオド直前で指定した範囲内を先頭のセルでコピー

★今回はE2に数式を入れたあと、E2を含む範囲を指定して「.FillDown」で一気にコピーして数式を入れました。


では問題です。
前回(マクロルーティン#18)ご紹介した「行を下の方向に+1ずつ移動させる」方法を覚えてますでしょうか?

画像7


◆問題

画像5

画像6

E列に数式を入れたくないので、
前回(マクロルーティン#18)ご紹介した「行を下の方向に+1ずつ移動させる」方法でE列に1セルずつをいれるマクロは書けますか?

★ヒント
まず、E2のセルに値を入れる書き方は次のとおりですね。
・Range("E2").Value = Range("C2").Value + Range("D2").Value
これは2行目の書き方ですから、2を3にすれば3行目の書き方、、
2を「i」に置き換えてみる、、

★注意!
コードウィンドウの上に「Option Explicit」の書き込みがある場合は消してくださいね。

ではマクロルーティン#20で。


この記事が気に入ったらサポートをしてみませんか?