- 最小値を見つけて、別の関連する値を 1 増やす候補として評価する必要がある変数のリストがあります。
- ただし、すでに 100 (パーセント) になっている変数は、100 を超えて増やすことはできないため、考慮しないでください。
(判定変数はa、増分値はb)
a1 = 0.5,
a2 = 0.6,
a3 = 0.2,
myArray(0) = a1
myArray(1) = a2
myArray(2) = a3
b1 = 0,
b2 = 10,
b3 = 100
私の現在のコード
If b1 = 100 Then
myArray(0) = null (empty, something to remove it from consideration in min function)
End IF
If b2 = 100 Then
myArray(1) = null
End IF
If b3 = 100 Then
myArray(2) = null
End IF
minvalue = Application.WorksheetFunction.Min(myArray(0), myArray(1), myArray(2))
'also tried: minvalue = Application.WorksheetFunction.Min(myArray)
If minvalue = a1 Then
b1 = b1 +1
Else If minvalue = a2 Then
b2 = b2 +1
Else If minvalue = a3 Then
b3 = b3 +1
End IF
a3 が最小値であるにもかかわらず、b3 をこれ以上増やすことはできないため、次に低い値は a1 であり、b1 が 1 増加することをコードに記録したいと思います。
この機能は、通常の Excel スプレッドシートで機能します。値のリストを作成し、その下のセルに次のように入力できます。この=Min(A1,B1,C1)
例では A1 = a1、上の例では B2 = a2 などです。C1 に Null と入力すると、min 関数は a1 なしで問題。
ただし、 vba で同じことをしようとすると、 myArray の要素が Null の場合は常に minvalue が 0 に等しくなります。
ループを使用して最小値を手動で決定することも検討しましたが、非常に見苦しく、コードをできるだけきれいに保ちたいと考えています。
よろしくお願いします。