• ベストアンサー

配列の中から最大値だけ取り出す方法

VB 2005,Framework2.0を使用しています。 複数のある配列の中から最大値の値だけを抽出するプログラムを作ろうと思っています。 For等のループを使うのは分かりますが、そこからどの様にコードを書けばいいのか分からなく困っています。 例えば配列にランダムに数値が入っていたとします。 Dim Hako(5) As Integer Hako(0) = 10 Hako(1) = 16 Hako(2) = 31 Hako(3) = 12 Hako(4) = 42 Hako(5) = 5 とあったらこの配列の中の最大値(42)のみを抽出したいです。 宜しくお願いします。

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

  • ベストアンサー
  • A88No8
  • ベストアンサー率52% (834/1603)
回答No.2

こんにちは  戦略としてソートプロシージャがライブラリとして既にあるならソートして結果を得ればOkです。  全要素数が判っていて一つ一つ比較して調べるなら下記を参考にして下さい。 CONST LastItem = 6'調べる配列データの最大要素数 DIM I AS INTEGR'LOOP変数 DIM MaxItem AS INTEGER'最大値を格納  LET MaxItem=0'結果を入れる変数は、初期化しておく  FOR I=0 TO LastItem-1 STEP 1   '調べた最大値とデータを比較し最大値だったら入替える   IF Hako(I)>MaxItem THEN LET MaxItem=Hako(I)  NEXT I  PRINT MaxItem END

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.1

こんにちは。 ループでと言うことでしたらこちらでどうでしょうか? Sub TEST() Dim Hako(5) As Integer Hako(0) = 10 Hako(1) = 16 Hako(2) = 31 Hako(3) = 12 Hako(4) = 42 Hako(5) = 5 MsgBox (Max(Hako)) End Sub Private Function Max(ByVal Val As Variant) As Double Dim x As Variant For Each x In Val If IsNumeric(x) Then If x > Max Then Max = x End If Else Max = Max(x) End If Next x End Function --------------------------- 最小値であれば不等号を逆にしてください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 配列に中で一番小さい値を教えてくれる関数ありませんか/アクセス、VBA

    Dim Arry(10) As integer この配列 Arry(1,2,3,4...) の中で一番小さい値は何番目の値は何か 知る関数なんか、ありませんか

  • 構造体配列

    こんにちわ。VB.NET初心者です。伝授お願いします。 VB6では Type Tpn_Index IdxSu As Integer idx(MAXTPN-1) As Integer End Type と定義できますが、VB.netでは構造体の中の配列部分が定義できません。 どのように書けばよろしいでしょうか? Public Structure Tpn_Index Dim IdxSu As Integer Dim idx() As Integer End Structure 上記の Dim idx() As Integer の部分です 宜しくお願いします

  • VBA 乱数と配列

    VBA 乱数と配列 配列(0)~配列(5)の一次元配列の中に、1から6までの数字を重複しないように入れたいのですが、 上手くいきません。 ご指導の程、お願いします。 Sub rndsys() Dim 配列(5) As Integer Dim サイコロ As Integer Dim カウントA As Integer Dim カウントB As Integer Dim フラグ As Integer For カウントA = 0 To 5 Do サイコロ = Int(Rnd(1) * 6) + 1 For カウントB = 0 To 5 If 配列(カウントB) = サイコロ Then フラグ = フラグ + 1 End If Next カウントB Loop Until フラグ > 0 配列(カウントA) = サイコロ Next カウントA MsgBox 配列(0) & vbCrLf & 配列(1) & vbCrLf & 配列(2) & vbCrLf & 配列(3) & vbCrLf & 配列(4) & vbCrLf & 配列(5) End Sub

  • 動的配列が存在(要素が有る)か否かを判定できますか?

    VBAで、「For ループが初期化されていません」エラーが発生します。 動的配列が要素0の時に発生するようです。 動的配列の要素が生成された場合だけ、Forループしたいのですが、 どうやって判定すればよいのでしょうか? ------------------------------- Dim 配列() As Integer Dim i As Integer i = 0 If (i < 0) Then ' 本当は真になったり偽になったり ReDim 配列(0 To i) 配列(i) = a + b i = i + 1 End If '' if ★★★ then '' 配列が有るか確認 For Each c In 配列 MsgBox c Next '' end if -------------------------------

  • 配列内で最大値を検索し、その値とindexを保管するにはどのようにしたらいいでしょうか??

    宜しくお願い致します。 VB2005を使って書いてます。 内容は質問タイトル通りなのですが、配列内の格納されている数値の中で最大値を抽出し、index番号も取得したのですが、かなり考えたのですが思いつかないので、こちらで質問させていただきました。 もちろん配列内では、最大値が一つとは限らず、複数個存在する場合がありますので、該当する全てのindex番号に関しては抽出することができるようにと考えています。 後々そのindex番号を使って検索を行うことになりますので、出来ましたらそのindex番号をさらに配列に格納し、For~nextを利用して簡単に参照することが出来るように出来たら理想的なのですが・・・ どなたかお知恵を拝借させてください。 宜しくお願い致します。

  • VB.NETで、配列をテーブルに変換する。

    VB.NETで、一次元配列string()にあるデータを、DataTableに変換 したいのですが、「型'String'の値を'System,Data,DataTable'に変換できません。」 と、エラーが発生してしまいます。 s1に、配列データが入っています。 Dim dt As DataTable Dim cnt As Integer Dim i As Integer dt = New DataTable count = s1.Length For i = 0 To cnt - 1 dt = CType(s1(i), DataTable) Next 解決方法が見つからず、行き詰っております。 宜しくお願い致します。

  • 配列を引数で渡したりするには?

    初心者なので困っています。配列をほかのサブルーチンへ渡して、その中で配列の値を書き換えて、上層のルーチンへ渡すにはどうしたらよいのでしょうか? 初心者なので、みなまさまのお知恵を拝借させてください。よろしくお願いします。 Private Sub Print() Dim C_ALL(3) As Integer Dim D_ALL(3) As Integer Data_Set(C_ALL(), D_ALL()) MsgBox(C_ALL() & " " & D_ALL()) '配列内容すべて表示 End Sub Private Sub Data_set(ByRef C_ALL As Integer, ByRef D_ALL As Integer) Dim i As Integer For i = 0 To 4 C_ALL(i) += i D_ALL(i) += i i += 1 Next End Sub

  • 配列を任意の数値で埋める方法

    VBAを使っていて dim a(256, 256, 256) といった配列を作って、ゼロとか一とか任意の数値で埋めたいのですが forループで代入していく方法はありますか? あるいは、既に数値が入ってある配列をリセットとして空の状態にする簡単な方法ってありますか?

  • 配列

    エクセルvbaなのですが Sub test() ' 配列 Dim arr() As Integer= {0, 1, 2, 3, 4, 5} ' 抜き出した要素を格納するための変数 Dim i As Integer ' すべての要素について繰り返す For Each i In arr Console.WriteLine (i) Next End Sub これって何でエラーになるのでしょう? Dim arr() As Integer= {0, 1, 2, 3, 4, 5} でエラーになりますが、なぜだかわかりません。

  • 配列を関数に渡す方法

    VB6.0のプログラムで質問があるのですが 下のプログラムのように配列num、num1を関数AAAに 渡したいと思うのですがどうすればいいのでしょうか? よろしくお願いいたします。 Option Explicit Private num(10) As Integer Private num1(10) As Integer Private Sub Write_Click()    AAA(num)    AAA(num1) End Sub Private Function AAA(???)    Dim i As Integer    For i = 1 To 10       ???(i) = i    Next i End Function

このQ&Aのポイント
  • 以前のPCでは、印刷設定のプリンターのプロパティでモノクロ設定ができましたが、LAVIE VETAに変えたら白黒設定ができません。モノクロ印刷の設定方法を教えてください。
  • LAVIE VETAの印刷設定でモノクロ設定ができません。以前のPCでは、プリンターのプロパティでモノクロ印刷ができたのですが、LAVIE VETAではどのように設定すればいいでしょうか。
  • 新しいPCのLAVIE VETAでは、印刷設定でモノクロ印刷ができません。モノクロ印刷の設定方法を教えてください。以前のPCでは、プリンターのプロパティでモノクロ印刷ができていたのですが、LAVIE VETAではどのように設定すればいいでしょうか。
回答を見る