ここから本文です

エクセルVBAの配列の中から最小値を見つけ出し、その値とその値が配列のどの場所に...

tyana153さん

2014/12/2319:06:49

エクセルVBAの配列の中から最小値を見つけ出し、その値とその値が配列のどの場所に格納されているかを知る方法を教えていただけないでしょうか?

例えば、distance(6)
distance(0)=20
distance(1)=50
distance(2)=30
distance(3)=20
distance(4)=25
distance(5)=40

このとき最小値は20ですが、知りたいのはこの値とそれが格納されている配列内での位置、すなわちdistance(0)とdistance(3)です。
求め方が分かる方がいましたら教えてください。よろしくお願いいたします。

閲覧数:
2,198
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

2014/12/2321:16:52

Sub sample()
Dim distance(6), xMin, i As Long, ii As Long, Answer()
distance(0) = 20
distance(1) = 50
distance(2) = 30
distance(3) = 20
distance(4) = 25
distance(5) = 40
xMin = Application.Min(distance)
For i = LBound(distance) To UBound(distance)
If distance(i) = xMin Then
ReDim Preserve Answer(ii)
Answer(ii) = i
ii = ii + 1
End If
Next i
MsgBox "以下の位置が最小値 " & xMin & " の位置" & vbCrLf & Join(Answer, ",")
End Sub

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

hana_noppoさん

2014/12/2322:10:39

少し手抜きがあったので修正しました。

Sub Sample()
Dim distance(5) As Integer
Dim Min As Integer
Dim i As Integer
Dim MinCnt As Integer
Dim MinIdx() As Integer

distance(0) = 20
distance(1) = 50
distance(2) = 30
distance(3) = 20
distance(4) = 25
distance(5) = 40
Min = 9999
For i = 0 To 5
Select Case distance(i)
Case Is < Min
Min = distance(i)
MinCnt = 1
ReDim MinIdx(1 To 1)
MinIdx(1) = i
Case Min
MinCnt = MinCnt + 1
ReDim Preserve MinIdx(1 To MinCnt)
MinIdx(MinCnt) = i
End Select
Next i
For i = 1 To MinCnt
MsgBox "最小値 " & Min & " のインデックス番号は " & MinIdx(i) & " です。"
Next i
End Sub

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。