質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

3回答

6466閲覧

VBAで変数を使用して関数挿入

N.Mana

総合スコア4

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/09/04 02:56

【VBAに数式を挿入したい】

VBAでformula関数を使用し、数式挿入を試みたのですが
以下数式のダブルクォーテーションの位置が
誤っているのが原因なのか上手くデバッグ出来ない状況です。
実行したい事は単純に、[G行- H行]を4行目から最終行までfor文で繰り返したいだけです。

VBA==================================

For i = 4 To LastRow

Sheets(1).Range("M" & i).Formula = "=G" & i & "- H" & i"

Next i

======================================

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

Formulaに設定する文字列の組み立て方で混乱しているのなら以下のようにするとわかりやすいです。

VB

1For i = 4 To LastRow 2 str = "=G{0}-H{1}" 3 4 str = Replace(str, "{0}", Str(i)) 5 str = Replace(str, "{1}", Str(i)) 6 Sheets(1).Range("M" & i).Formula = str 7Next

VB

1For i = 4 To LastRow 2 str = "=100*(H{0}-G{1}) / G{2} < 5%" 3 4 str = Replace(str, "{0}", Str(i)) 5 str = Replace(str, "{1}", Str(i)) 6 str = Replace(str, "{2}", Str(i)) 7 Sheets(1).Range("L" & i).Formula = str 8Next

※ 式自体のエラーなどは考慮していません。質問者さんが記載されたものそのまま組み立てています。

投稿2019/09/04 04:31

編集2019/09/04 09:32
Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

N.Mana

2019/09/04 09:28

ご回答頂き誠にありがとうございます! 参考にさせていただきます。
guest

0

行末のダブルクォーテーションが余計なだけでは。

VBA

1Sheets(1).Range("M" & i).Formula = "=G" & i & "- H" & i" 23Sheets(1).Range("M" & i).Formula = "=G" & i & "- H" & i

投稿2019/09/04 04:04

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

N.Mana

2019/09/04 04:24

迅速にご対応頂きありがとうございます!大変助かります。 同様の質問になりますが、もし以下の関数につきましても 解決方法をご存知でしたらご教示いただきたいです。 【計算式】======================= 100×(今回申請額-前回申請額)÷(前回申請額)<5% ============================= 【VBA】============================================= For i = 4 To LastRow Sheets(1).Range("L" & i).Formula = "=100*(H" & i & "-G" & i") / G"& i & < 5%" Next i ==================================================
ttyp03

2019/09/04 04:29

式自体を正しく書くだけならこうなります。 Sheets(1).Range("L" & i).Formula = "=100*(H" & i & "-G" & i & ") / G"& i & "< 5%" 最後の「<5%」はどう扱いますか? これだと単に比較結果でTRUEかFALSEが返るだけですが。 5%もそのままでは無理でしょうし。
guest

0

最後の " が不要です。

vba

1 Sheets(1).Range("M" & i).Formula = "=G" & i & "- H" & i

別案

Forループを使わなくても下記のコード1行で同じことが可能です。

vba

1Sheets(1).Range("M4:M" & LastRow).Formula = "=G4-H4"

$ がついてないと相対参照なので。

投稿2019/09/04 04:04

編集2019/09/04 04:11
hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

N.Mana

2019/09/04 04:10

解決しました。 早速ご回答頂き誠にありがとうございます!
N.Mana

2019/09/04 04:30

なるほどですね!大変勉強になります。 追加になりますが以下の関数につきましても解決方法がわからない状況です... 【計算式】======================= 100×(今回申請額-前回申請額)÷(前回申請額)<5% ============================= 【VBA】============================================= For i = 4 To LastRow Sheets(1).Range("L" & i).Formula = "=100*(H" & i & "-G" & i") / G"& i & < 5%" Next i ==================================================
hatena19

2019/09/04 06:18

どのような計算をしたいのか日本語で説明してもらえますか。 あるいは、実際にセルに計算式を手入力するとしたら、どのような式になりますか。
hatena19

2019/09/04 07:17

求めたいのは下記のようなことでしょうか。 今回申請額の前回申請額からの増加率が5%未満かどうか判定したい。 だとしたら式では =100*(H4-G4)/G4<5 ですので、 コードでこのような結果になるように考えてみましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問