• ベストアンサー

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

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

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 それは、サブルーチンのユーザー定義関数にすればよいのではありませんか? Function ArrayFind(BaseArray As Variant, SearchNum As Variant) As Boolean Dim flg As Boolean Dim v As Variant flg = False For Each v In BaseArray  If v = SearchNum Then    flg = True    Exit For  End If Next v  ArrayFind = flg End Function ただし、浮動小数点型の数値の比較は、少し手直ししないとうまくいかないことがあるかと思います。

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

その他の回答 (1)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。 > ある値が、配列のなかに存在するか、 Filter 関数を使うか、配列全体をループさせてチェックするか... 以下は Filter 関数の場合のサンプルです。   Dim vSrc As Variant   Dim vRet As Variant   Dim sKey As String      ' テスト配列   vSrc = Array(10, 20, 30, 40)   ' 検索値(文字列で指定する)   sKey = CStr(20)   ' Filter 関数で検査する   vRet = Filter(SourceArray:=vSrc, _          Match:=sKey, _          Include:=True, _          Compare:=vbTextCompare)   ' Ubound(vRet) で -1 が返れば該当なし   If UBound(vRet) >= 0 Then     MsgBox "含まれる", vbInformation   Else     MsgBox "含まれない", vbCritical   End If 詳細は Filter 関数のヘルプをご覧下さい。 Access2002 で確認しました。Access97 では恐らく Filter 関数は 使えなかったと思います。 では。

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

関連するQ&A

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

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

  • エクセル 条件を最初に満たしたセルの行の値の取得VBA

    いつもお世話になっております。 ある表においてA2以降に 2 FALSE 3 FALSE 4 FALSE 5 FALSE 6 FALSE 7 FALSE 8 FALSE 9 TRUE 10 FALSE 11 TRUE 12FALSE 13FALSE ・ ・ となっています。 上から調べて最初に”TRUE”であるセル(この場合はA9)の 行数の値(9)を取得するようなVBAはどのように記述すればよいでしょうか? 関数であればROW関数とVLOOKUP関数の組み合わせでできるのですが・・

  • C#で配列の戻り値について

    プログラミング初心者で、ただいまC#の勉強中です。 bool型(trueまたはfalse)とstring型(関数内で取得した文字列)の値を 配列で関数の戻り値として返したいのですが、どうすれば良いのかわかりません。 true/falseもstringとして呼び出し側で判別するしか方法はないのでしょうか。 アドバイスをお願いいたします。

  • 動的配列に値を返す関数

    Split関数のように動的配列に値を返す関数を作成しようとしているのですが、 作り方が全くわからず途方に暮れています。 Function 関数名()(引数1,引数2) などと関数名の後に()を付けたりしてみたのですが、 コーディング時にエラーとなってしまいます。 何か良い方法はないでしょうか?

  • Javascriptの配列の便利な処理

    Javascriptの配列で以下のような処理は自分で作らないといけないのでしょうか? var csv = 'A,B,C,D'; var ary new Array(); ary = csv.split(','); 要素の有無 true/false ary.exists('A') 結果 true 要素の削除 ary.delete('A') 結果 ary = ['B', 'C', 'D'];

  • 引数が配列のときの関数内でのsizeofについて

    こんにちは. Cを勉強している最中に疑問にあったことを質問させていただきます.以下のプログラムで配列myarrayの中の最大のメンバーを見つけるプログラムです.コメントアウトしてある //int ary_size = sizeof(myarray)/4; をグローバル変数で定義するとうまく最大の数を見つけてくれるのですが, 関数の中で int ary_size = sizeof(ary)/4; と定義するとうまくいきません.そこで,以下の printf("The size of the ary is %d\n",ary_size); という表示を追加したところ,ary_size = 1となっていることが分かりました. なぜそうなるのでしょう?関数の引数はint ary[]の配列なので,sizeof(ary)でaryがメモリ中で占めるバイト数が得られるんじゃないんですかね?ちなみに私の環境ではsizeof(int)は4バイトなので int ary_size = sizeof(ary)/4; と割る4で配列のメンバーの数を求めています. 初心者の質問ですみませんがよろしくお願いします. #include <stdio.h> #include <Windows.h> int myarray[] = {1,2,3,4,5,6,7,2}; int FindMax(int ary[]); //int ary_size = sizeof(myarray)/4; int main() { int max; max = FindMax(myarray); printf("The maximum value is %d\n",max); Sleep(2000); return(0); } int FindMax(int ary[]) { int ary_size = sizeof(ary)/4; int i; int max; max = ary[0]; for(i=1;i<ary_size;i++) { if(ary[i]>max) { max = ary[i]; } } printf("The size of the ary is %d\n",ary_size); return(max); }

  • 関数の値の渡し方

    main関数内でkaikiという関数を呼び出し、 そのときmainの中にある配列atai[10]の値をkaikiに渡して, kaiki内で計算した結果のkotae1,kotae2という二つの変数をmainに返したいのですが、 どのように書いたらいいのでしょうか?

  • 配列の値をループ

    よろしくお願いします。 例えば、$ary=array(1,2,3,4,5,6,7); という配列があるとします。この1,2,3,4,5,6,7の値を ループで表現することは可能でしょうか?? for文で試してみましたが、 $hoge="for($i=0;$i<7;$i++){ print $i; }"; $ary=array($hoge); 表示結果 for($i= でした。""で囲んだのでそのまま文字としてなったんだと 思います。""をはずすとエラーになります。 理想の表示結果は当然 1,2,3,4,5,6,7です。 行いたいことの意図はわかっていただけたでしょうか? 可能な場合、どういう記述をすればうまくいくのでしょうか? それとも不可能なのでしょうか?よろしくお願いします。 環境 php4.4.4 apache2 winXP

    • ベストアンサー
    • PHP
  • Vlookup 関数が入っているセルの値を抽出したい

    kumasanです 久しぶりに必要にかられてVBAを利用することになりました。 Excel 2002 SP3を利用しています 次のようにセル(2,18)にVlookup関数を利用してセル(M2)の値 を 物品.xlsの中に名前(集中)の中から2列目の値を選択させて います Cells(2, 18).Formula = "= VLookup(M2, 物品.xls!集中, 2, False)" 選択はできています セル(M2)の値がみつかれば例えばその値が出ています 今回は"○"を表示させています みつからない場合は、#N/Aとエラー表示されます さて、ここで、このCells(2,18)にカーソルを持っていき その値をhantei( Dim hantei As Variant)という変数に 入れようと思い下記のように記載しています   Range("R2").Select hantei = Str(Range("R2").Select) しかし、ここでhanteiの中身を表示すると セル(M2)の値がみつかっても「true」なかっても「true」と なって います この変数hanteiにより、この行の削除をするか、次の処理に進 むか 判定させたいのですが・・・ どのようにすれば、この判定ができるか教えていただけません か よろしくお願いします。 なお次のようにエラー表示なしにして「true」「false」にし ても 同じ結果でした Cells(2, 18).Formula = "= IsError(VLookup(M2, 集中物品.xls! 集中, 2, False))" よろしくお願いします。

  • 連想配列からの値の取り出し

    お世話様です。 タイトルにもありますが連想配列を作成した後(以下に記述例)に その配列からキーを指定して値を取得したいと思っております。 array_keys関数だと値を指定してキーを取得するみたいで うまくいきませんでした。 何かよい方法ありませんでしょうか? //配列に格納 while (条件) {   $aParaOra += array((キー) => (値)); }

    • ベストアンサー
    • PHP

専門家に質問してみよう