• ベストアンサー

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

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

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.4

Excelのワークシート関数を使う超手抜き関数です。 (^_^;) Function K() As Integer Dim ObjXL As Object Dim arrayVal(2) As Integer arrayVal(0) = 10 arrayVal(1) = 5 arrayVal(2) = 8 Set ObjXL = CreateObject("Excel.Application") K = ObjXL.Application.WorksheetFunction.Min(arrayVal()) Set ObjXL = Nothing 'Debug.Print Excel.Application.WorksheetFunction.Min(arrayVal()) 'Microsoft Excel ○○ Object Library に参照設定がしてあれば↑だけでも End Function まじめに考えたいときは [VB] ソートのアルゴリズム http://support.microsoft.com/default.aspx?scid=kb;ja;169617

maaaa
質問者

お礼

あありがとうございました

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

その他の回答 (3)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

アクセスは触ったことないですが、エクセルのワークシート関数を使わなくても最小値はVBAでとれます。(エクセルVBAしか知りませんが) saisyo = Arry(LBound(Arry())) For i = LBound(Arry()) To UBound(Arry()) If saisyo > Arry(i) Then saisyo = Arry(i) x = i + 1 End If Next i MsgBox "最小値は、" & x & "番目の " & saisyo & "です。"

maaaa
質問者

お礼

ありがとうございました

全文を見る
すると、全ての回答が全文表示されます。
  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

No.1です 間違えました 回答の関数はエクセルのものです。

maaaa
質問者

お礼

ありがとうございます エクセルには範囲を指定すると その中から小さいものをとりだせるんですね 関数は知らないけど、なんとなく想像できます

全文を見る
すると、全ての回答が全文表示されます。
  • keirika
  • ベストアンサー率42% (279/658)
回答No.1

Application.WorksheetFunction.Min(Arry)ではどうでしょうか?

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

関連するQ&A

  • 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

  • ある値が、配列のなかに存在するか、知る関数

    お世話になります ある値が、配列のなかに存在するか、知る関数、はありませんか たとえば、配列:Aryに、10,20,30,40、と入っている 値20、をもってチェックしたとき、True、が返り 値22、ではFalse、が返る こんな関数ないでしょうか ACCESSのVBAです よろしくお願いします

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

    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)のみを抽出したいです。 宜しくお願いします。

  • バイナリ形式で読み込み時の配列に入る値について

    filecsvにCSV形式のデータが含まれているときに 以下のソース(一部抜粋)でGet #1,,bytArray で配列bytArrayにfilecsvの全データを読み込んでいると思うのですがその時にbytArray(0) bytArray(1)の配列を用意すればそれらはどういう形で配列の中に値が入るのでしょうか? よろしくお願い致します。 Dim Fileno As Integer Dim bytArray() As Byte Open filecsv For Binary As Fileno ReDim bytArray(1) Get #1, , bytArray … … Close #Fileno

  • 配列について

    配列の要素数をinteger型にいれたいのですがどうしたらいいですか? 例   Dim A() As String   Dim B AS Integer       A = "あ","い","う" Aの要素数3をBに入れたいのです。 この配列の作りかたもあっているか分かりませんがよろしくお願いします。

  • VB6で配列を引数にするときの2通りの方法について

    VB6で引数に配列を渡す方法が2通りあるよう?ですが以下のような配列があり、渡し方によって引数の定義の仕方が異なると思うのですが、(2)番目の関数の書き方が知りたいです。 dim ary_dat(10) as integer (1)test_A( ary_dat ) は、sub test_A( byref ary() as integer)という関数を作れば動作することはわかりましたが、 (2)test_B( ary_dat(0) ) は、関すでどのような引数を定義すればできるのでしょうか?

  • 配列を関数に渡す方法

    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

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

    初心者なので困っています。配列をほかのサブルーチンへ渡して、その中で配列の値を書き換えて、上層のルーチンへ渡すにはどうしたらよいのでしょうか? 初心者なので、みなまさまのお知恵を拝借させてください。よろしくお願いします。 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

  • VB2005での関数への配列の参照渡しの方法

    Visual Basic 2005で、 =============================================================== Function func(ByVal a As Integer, ByRef b() As Integer) As Integer  a += 1 : b(0) = 1 : b(1) = 2 : b(2) = 3 Return 0 End Function ============================================================== という関数があったとしてメインのプロシージャに ================================================================ Dim c As Integer Dim d As Integer Dim e() As Integer = Array.CreateInstance(GetType(Integer), 10) d=7 c = func(d, e) ================================================================ と書き入れると結果はd=7(∵値渡し)、e(0)=1,e(1)=0,e(2)=0(∵参照渡し)となってしまうと思います。 e(0)=1,e(1)=2,e(2)=3としたい場合はどのように記述すればよいのでしょうか?

  • ※VBA配列

    http://oshiete1.goo.ne.jp/qa5196795.htmlで 質問させてもらった者です。質問不足だったため 質問の内容を追加したかったのですが、追加の方法がわからず またこちらで質問させていただきました Dim time1 As Integer, time As Integer Dim X As Integer, Y As Integer Dim X1 As Integer, Y1 As Integer Dim X2 As Integer, Y2 As Integer Dim maru As String, yoko As String, tate As String Dim sankaku As String, shikaku As String Sub 描画() Cells(Y2, X2).Value = shikaku Cells(Y1, X1).Value = sankaku Cells(Y, X).Value = maru End Sub Sub 削除() Cells(Y2, X2).Value = "" End Sub Sub 待機() For time1 = 0 To 1000 For time2 = 0 To 1000 Next Next End Sub Sub 座標移動() X2 = X1 Y2 = Y1 X1 = X Y1 = Y If yoko = "右" Then X = X + 1 Else X = X - 1 End If If X = 30 Then yoko = "左" ElseIf X = 1 Then yoko = "右" End If If tate = "上" Then Y = Y + 1 Else Y = Y - 1 End If If Y = 20 Then tate = "下" ElseIf Y = 1 Then tate = "上" End If End Sub Sub main() maru = "●" sankaku = "▲" shikaku = "■" X = 1 Y = 1 X1 = 1 Y1 = 1 X2 = 1 Y2 = 1 yoko = "右" tate = "上" Do 描画 待機 削除 待機 座標移動 Loop End Sub a~tの文字が、上記のような動きをする プログラムを作成するにはどのように配列を活かせばいいですか? 配列がよくわかっておらず勉強したのですが…使えずにいます;;

専門家に質問してみよう