• ベストアンサー

配列の質問

ACCESS97を使っています。 モジュールで、配列を使った時、 データから、その配列番号を取得することはできますか? 例)5つの配列H[4]に、a,b,c,d,e と入れた時、 H[3] とすれば、d が分かりますが、 d を入力した時、3 を取得できるのでしょうか?

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

  • ベストアンサー
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.4

> 5つの配列に、それぞれ > H[0]="a",H[1]="b",H[2]="c",H[3]="d",H[4]="e" とした場合です。 Sub 配列()   Dim H As Variant   Dim strInput As String   Dim lngIdx As Long      H = Array("a", "b", "c", "d", "e")      strInput = InputBox("文字列を入力")      For lngIdx = LBound(H) To UBound(H)     If H(lngIdx) = strInput Then       MsgBox lngIdx + 1 & "番目"       Exit Sub     End If   Next lngIdx      MsgBox "一致データなし" End Sub で、分かるかな?

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

配列データを探す値(文字列)で総なめ比較で繰り返しするのが多いでしょう。 もっと大掛かり(データが多いなど)の時は、データ構造を持ちこんで(B-Treeや多分木などをイメージ)早く・平均的に見つかる工夫をするでしょう。 配列とデータ検索は表裏一体のような気がする。

回答No.3

ちょっと手間が掛かるが、昔からある手法 参照設定:Microsoft Scripting Runtime Google検索キーワード:連想配列

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

この場合のHというのが良く分かりません。 この配列が"abcde"という文字の場合は =MID("abcde",3) で "c" が表示 =FIND("c","abcde") で 3 が表示 セル範囲の場合(A1からA5にa,b,c,d,eがある場合) =INDEX(A1:A5,3,1) で "c" が表示 =MATCH(A1:A5,"c",0) で 3 が表示

cdma
質問者

お礼

回答ありがとうございます。 Hは 単に配列名です。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 ループして探すしかないと思います。 Dim i As Long For i = LBound(H) To UBound(H)   If H(i) = "d" Then     MsgBox i     Exit For   End If Next i もちろん同じデータがあれば、添え字の小さい方を取得します。

cdma
質問者

お礼

回答ありがとうございます。 説明不足でした。 説明不足 5つの配列に、それぞれ H[0]="a",H[1]="b",H[2]="c",H[3]="d",H[4]="e" とした場合です。

関連するQ&A