• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:For Next ステートメントで計算式を代入したいのですが・・・)

For Next ステートメントで計算式を代入したいのですが・・・

このQ&Aのポイント
  • Excel(2003) VBAで、For Nextステートメントを使用して計算式を代入する方法について質問します。
  • 20行ごとに同じような表が20個続いており、特定のセルに計算式を入れたいのですが、現在できていません。
  • 計算式の右側のセルを変数iの値に応じて20行ずつずらしたいのですが、方法がわかりません。どうすればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

R1C1形式を上手に使ってみると,ご相談の「セルによって式の文字列を変える」必要が無くなります。 For i = 18 To 400 Step 20 Cells(i, 6).FormulaR1C1 = "=IF(R[-12]C[10]>Sheet2!RC[1],R[-17]C[1],Sheet2!RC)" Next i R1C1形式の式の記述は,先にセルに一度 F18: =IF(P6>Sheet2!G18,G1,Sheet2!F18) の式を入れておき,ツールメニューのオプションの全般でR1C1にチェックを入れると =IF(R[-12]C[10]>Sheet2!RC[1],R[-17]C[1],Sheet2!RC) のように自動で変わるので,そのまま数式バーの中からコピーして使えばOKです。 #別の手 目的のセルをまとめてUnionにしておき,一斉に一つの式を投入する手もあります ワークシート上の操作では,目的のセルをコントロールキー+クリックで飛び飛びに選択しておき,一つ式を入れてコントロール+Enterで入力する操作に相当します。 でも今回は式の入力先セルが飛び飛びで沢山なので,対象セル範囲を確保するのに結局ループしないといけないため,こちらの方法はあまりメリットはありません。

AMEFURIO
質問者

お礼

やっぱりR1C1のほうがいいんですよね・・・ 色々詳細に教えていただき、ありがとうございました。

その他の回答 (3)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

こんなパターンもありかも Cells(18, 6).Formula = "=IF(P6>'sheet2'!g18,g1,'sheet2'!f18)" Cells(18, 6).Copy For i = 18 To 400 Step 20 Cells(i, 6).PasteSpecial Next i Application.CutCopyMode = False

AMEFURIO
質問者

お礼

ちょっとよくわからないのですが、もう少し自力で調べてみますね。 ありがとうございました。

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.2

Cells(i, 6).Formula = "=IF(P"+6+(i-18)+">'sheet2'!g"+i+",g"+1+(i-18)+",'sheet2'!f"+i+")" で、どうです? ※数字の意味が理解できていないので、適宜オフセットして使ってください。 ※最初と真ん中だけ数字が18からじゃないので、-18させています。

AMEFURIO
質問者

お礼

なるほど!っていう感じです。ありがとうございました。

  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.1

単純に&で文字列を組み立てればできます。 Cells(I,6).Formula = "=IF(P" & 6 + I & ">'sheet2'!g" & 18 + I & ",g" & 1 + I & ",'sheet2'!f" & 18 + I & ")"

AMEFURIO
質問者

お礼

単純すぎてなんかお恥ずかしい限りです。 ありがとうございました。

関連するQ&A