- ベストアンサー
配列の質問
ACCESS97を使っています。 モジュールで、配列を使った時、 データから、その配列番号を取得することはできますか? 例)5つの配列H[4]に、a,b,c,d,e と入れた時、 H[3] とすれば、d が分かりますが、 d を入力した時、3 を取得できるのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> 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)
配列データを探す値(文字列)で総なめ比較で繰り返しするのが多いでしょう。 もっと大掛かり(データが多いなど)の時は、データ構造を持ちこんで(B-Treeや多分木などをイメージ)早く・平均的に見つかる工夫をするでしょう。 配列とデータ検索は表裏一体のような気がする。
- how-do-you-do
- ベストアンサー率56% (59/104)
ちょっと手間が掛かるが、昔からある手法 参照設定:Microsoft Scripting Runtime Google検索キーワード:連想配列
- mshr1962
- ベストアンサー率39% (7417/18945)
この場合の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 が表示
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。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 もちろん同じデータがあれば、添え字の小さい方を取得します。
お礼
回答ありがとうございます。 説明不足でした。 説明不足 5つの配列に、それぞれ H[0]="a",H[1]="b",H[2]="c",H[3]="d",H[4]="e" とした場合です。
お礼
回答ありがとうございます。 Hは 単に配列名です。