dポイントプレゼントキャンペーン実施中!

Range("V38").GoalSeek Goal:=440, ChangingCell:=Range("W38")
という、ゴールシーク関数がございます。
この38という数字のところを39から100まで作成したいのですが、
良い方法はございますでしょうか。
ゴールシーク関数を用いていますが、これはあまり関係なく、連続したデータを作成する関数について、お聞きしております。
ご回答お待ちしております。

A 回答 (4件)

For i = 38 To 100


 Range("V" & i).GoalSeek Goal:=440, ChangingCell:=Range("W" & i)
 Next
これで38行から100行まで、V列とW列についてゴールシークを行います。

1行ずつ
 Range("V38").GoalSeek Goal:=440, ChangingCell:=Range("W38")
 Range("V39").GoalSeek Goal:=440, ChangingCell:=Range("W39")
 …
 Range("V99").GoalSeek Goal:=440, ChangingCell:=Range("W99")
 Range("V100").GoalSeek Goal:=440, ChangingCell:=Range("W100")
なんて記述する必要はない。
これはプログラミングにおける繰り返し処理の基本です。

・・・
質問タイトルは関数についての質問なのに、本文がマクロについての質問なのかが理解できない。
    • good
    • 0
この回答へのお礼

v38&w38~v2500&w2500まで、処理を行いたいのですが、何かセルの指定などがあるのでしょうか。

お礼日時:2016/11/26 22:09

No.3のお礼に対する返答です。



>これはプログラミングにおける繰り返し処理の基本です。
基本という事はちょっと調べるだけで情報が出てくるものです。
まずは「繰り返し処理」について調べてみてください。
そのうえで疑問が残った点について質問するようにしましょう。

※自身でできることは率先してやりましょう。
    • good
    • 0

For文で38→100までループする


こういう意味で合っているでしょうか?

そうではなく単純に
Range("V38").GoalSeek Goal:=440, ChangingCell:=Range("W38")
の文字を38→100まで作りたいのでしたら

エクセルのシートに2つに別けて貼り付け、それを100になるまでオートフィルでコピーしたものをテキストエディタに貼り付け、間のタブ文字を一括削除結合すれば良いかなと思います。
    • good
    • 0
この回答へのお礼

うまくオートフィル出来ました。ありがとうございます。

お礼日時:2016/11/26 22:09

基本 マクロもしくは VBAの記述


ゴールシークのマクロは、
Range("数式入力セル").GoalSeek Goal:=目標値,ChangingCell:=Range("変化させるセル")
なので、
A列に目標値、B列に数式を入力、C列を変化させるとすれば、
For i = 39 To 100
Cells(i, 2).GoalSeek Goal:=Cells(i, 1).Value, ChangingCell:=Cells(i, 3)
Next

もうひとつの連続変化なら loop もあり
dim x as long
X=39
do
計算

x=x+1
if x>100 then
exit do
endif
loop
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!