匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

VBAで最小値をみつけるコードを書きたいので教えてください。


1列目で5個ずつの固まりの中で最小値をみつけ、
2列目の先頭(5個の固まりの先頭)にその最小値を使った数式を入れる、
次の5行に行き、同じ事をする、という風に繰り返すコードを書きたいのですが、
うまくいきません。

For i = 0 To 5
Dim val
Dim min
val = A.Cells(i * 5 + 1, 1).Resize(, 4).Value 
   'A1セルから5個下までの内容を要素とする配列
min = WorksheetFunction.min(val)
   ’その中で一番小さい値をminとする
A.Cells(i * 5 + 1, 2).Formula = "= 100-G" & CLng(min)
 ’2列目の1番上に、"=100-min"という数式を入れる
  Erase val ’配列をリセット
min = Nothing '最小値をリセット
Next i 'その次の5セルの固まりへ…(6-10行)

最初、なんとかデバックなしで完了したのですが、数式が思惑通りでなかったので、
配列や変数が蓄積されていくためかと思い、リセットするコードを追加しました。
今度はmin = Nothingがデバックに引っ掛かります。

どうすればうまく行くか教えてください。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/01/09 17:09:56
  • 終了:2013/01/10 10:39:16

ベストアンサー

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2013/01/09 17:48:13

Nothing するときは Setしないとダメです。

Set min = Nothing

他1件のコメントを見る
匿名回答1号

For i = 0 To 5
min = WorksheetFunction.min(Range(Cells(i * 5 + 1, 1), Cells(i * 5 + 4, 1)))
'その中で一番小さい値をminとする
Cells(i * 5 + 1, 2).Formula = "= 100-G" & CLng(min)
Next i 'その次の5セルの固まりへ…(6-10行)

これでよし

2013/01/09 18:42:40
匿名質問者

ありがとうございます。配列でなくてもよかったんですね!
これにします。
さらに、私のミスで、数式がに"G"という余計なものがついてて、
ずっと見当違いの数式が入っていましたが、
そこを取り除いて解決しました。

2013/01/10 10:39:06

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません