
excel2000のVBAで二次元配列を検索して、
検索条件に一致する配列の番地を取得するための、
コード記述に関する質問です。
例えば、
myarray(i,j), i=1,j=1の配列があるとして、それぞれに
myarray(0,0) = 1
myarray(0,1) = 2
myarray(1,0) = 3
myarray(1,1) = 4
という値が格納されており、
配列を検索して値が4の番地(i=1,j=1)を返したい、
といった場合、どのようにすれば良いのでしょうか。
ご存知の方、是非回答お願いします。
No.1ベストアンサー
- 回答日時:
こんな感じで
Sub xxx()
Dim myarray(10, 10)
'
myarray(0, 0) = 1
myarray(0, 1) = 2
myarray(1, 0) = 3
myarray(1, 1) = 4
'
For i = 0 To 1
For j = 0 To 1
If myarray(i, j) = 4 Then MsgBox "i=" & i & vbCrLf & "j=" & j
Next j
Next i
End Sub
No.2
- 回答日時:
こんばんは。
通常、Excelでは、そのような場合は、Rangeオブジェクトにして、検索します。また、2次元はややこしくなるので、あまり作らないほうがよいですね。
Sub Test1()
Dim myArray(1, 1) As Integer
Dim i As Integer
Dim j As Integer
Const F As Integer = 4
myArray(0, 0) = 1
myArray(0, 1) = 2
myArray(1, 0) = 3
myArray(1, 1) = 4
For i = LBound(myArray(), 1) To UBound(myArray(), 1)
For j = LBound(myArray(), 2) To UBound(myArray(), 2)
If myArray(i, j) = F Then
GoTo EndLine
End If
Next j
Next i
EndLine:
MsgBox "(" & i & "," & j & ")"
End Sub
仰る通り二次元だと難しいです。
質問の例だと、二次元の意味全く無いですもんね。
LBound関数というのも初めて見ました。
これは、動的配列を使った場合に便利そうですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
2次元動的配列の第一引数のみを...
-
VB6 配列を初期化したい
-
VBAで近似曲線の係数取得
-
特定のセル範囲で4文字以上入力...
-
VBA 1次元配列を2次元に追加する
-
delphiで配列を、コピーするには。
-
【VBA】配列とWorksheetFunctio...
-
VBA Match関数の限界
-
《エクセル2000》A列・B列の商...
-
ビンゴ
-
subの配列引数をoptionalで使う...
-
VBのFunctionで、配列を引数...
-
VB2008: CSV を二次元配列に読...
-
重複するパターンの算出について。
-
VLOOKUP関数で、一番下...
-
配列で飛び飛びの値を指定して...
-
linest関数に配列を渡す
-
エクセルで特定の列が0表示の場...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
特定のセル範囲で4文字以上入力...
-
VBA 1次元配列を2次元に追加する
-
subの配列引数をoptionalで使う...
-
配列変数の添字が範囲外ですと...
-
2次元動的配列の第一引数のみを...
-
ListViewで、非表示列って作れ...
-
MATLABにて場合分け関数を定義...
-
VB6 配列を初期化したい
-
AES暗号にて、AES_set_encrypt_...
-
配列を任意の数値で埋める方法
-
RPG E仕様書について
-
VBのFunctionで、配列を引数...
-
ビンゴ
-
エクセルで最小値から0を除く方法
-
順列の作成
-
VBA Match関数の限界
-
VLOOKUP関数で、一番下...
-
for each の現在の配列ポインタ...
おすすめ情報