如何在VB的数组中查找数据?

以下是我的语句块:
Dim dd(27)
dd(0) = 75
dd(1) = 80
dd(2) = 85
dd(3) = 90
dd(4) = 95
dd(5) = 100
dd(6) = 106
dd(7) = 112
dd(8) = 118
dd(9) = 125
dd(10) = 132
dd(11) = 140
dd(12) = 150
dd(13) = 160
dd(14) = 180
dd(15) = 200
dd(16) = 224
dd(17) = 250
dd(18) = 280
dd(19) = 315
dd(20) = 355
dd(21) = 400
dd(22) = 450
dd(23) = 500
dd(24) = 560
dd(25) = 630
dd(26) = 710
dd(27) = 800

现在已知a=315欲查找到280就是315前一个数据怎么办啊?请各位大侠多多指教

第1个回答  2008-11-19
有序数的快速查找方法(非递归法)

Private Sub Command1_Click()
Dim dd(27) As Long
Dim aa As Long
Dim v As Long

dd(0) = 75
dd(1) = 80
dd(2) = 85
dd(3) = 90
dd(4) = 95
dd(5) = 100
dd(6) = 106
dd(7) = 112
dd(8) = 118
dd(9) = 125
dd(10) = 132
dd(11) = 140
dd(12) = 150
dd(13) = 160
dd(14) = 180
dd(15) = 200
dd(16) = 224
dd(17) = 250
dd(18) = 280
dd(19) = 315
dd(20) = 355
dd(21) = 400
dd(22) = 450
dd(23) = 500
dd(24) = 560
dd(25) = 630
dd(26) = 710
dd(27) = 800

aa = 280 '要查找的数字
v = NumFind(dd, aa) '调用查找函数
If v = -1 Then
MsgBox "没发现要查找的数据", vbExclamation, "提示"
Else
MsgBox "当前要查找的:" & aa & " 值在dd数组的第:" & v & " 个元素。", vbInformation, "信息"
End If
End Sub

Public Function NumFind(ByRef Myarray, FNumber As Variant) As Long
Dim K As Long, I As Long
Dim L1 As Long, R1 As Long
Dim l As Long, R As Long

l = LBound(Myarray): R = UBound(Myarray)

NextLoop:

K = (l + R) Mod 2
If K = 1 Then '中点
I = (l + R + 1) \ 2
Else
I = (l + R) \ 2
End If
If Myarray(I) <> FNumber Then
If Myarray(I) > FNumber Then
L1 = l: R1 = I
Else
L1 = I: R1 = R
End If
If (R1 - L1) = 1 Then '第一个和最后一个
If Myarray(L1) = FNumber Then
NumFind = L1
ElseIf Myarray(R1) = FNumber Then
NumFind = R1
Else
NumFind = -1 '没有发现
End If
Else
l = L1: R = R1
GoTo NextLoop
End If
Else
NumFind = I
End If
End Function
第2个回答  2008-11-19
在你的语句后加上
a = 315
For i = 0 To 27
If dd(i) = a Then
Print "dd(" & i - 1 & ")=" & dd(i - 1)
End If

Next i本回答被提问者采纳
第3个回答  2008-11-19
Dim dd(27)
dd(0) = 75
dd(1) = 80
dd(2) = 85
dd(3) = 90
dd(4) = 95
dd(5) = 100
dd(6) = 106
dd(7) = 112
dd(8) = 118
dd(9) = 125
dd(10) = 132
dd(11) = 140
dd(12) = 150
dd(13) = 160
dd(14) = 180
dd(15) = 200
dd(16) = 224
dd(17) = 250
dd(18) = 280
dd(19) = 315
dd(20) = 355
dd(21) = 400
dd(22) = 450
dd(23) = 500
dd(24) = 560
dd(25) = 630
dd(26) = 710
dd(27) = 800
dim j as integer
dim k as integer
private sub command1_click()
for i=0 to 27
if dd(i)=315 then j=i
if dd(i)=280 then k=i
next
if j=k+1 then
msgbox("280315的前一个数据")
end if
第4个回答  2008-11-19
给我分,给你答
相似回答