求查出最接近的数。。。
在数据库有这样的值
27 29 31 33 35 37.....79
现知值一:13 求13的倍数在上面的数值中正好合适或者最接近,只能大于或等于;结果为39
值二:28 结果为29
求算法
[解决办法]
这样更好一些:
Function getit(ByVal mynum As Integer, ByVal nums As String) As String
Dim i As Long, s, m As Integer, t() As String
ReDim t(mynum - 1)
s = Split(nums)
For i = 0 To UBound(s)
t(s(i) Mod mynum) = t(s(i) Mod mynum) & ", " & s(i)
Next
getit = Join(t, " ")
getit = Mid(Split(Trim(getit), " ")(0), 2)
End Function
Private Sub Command1_Click()
MsgBox getit(13, "27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 ")
MsgBox getit(28, "27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 ")
End Sub
[解决办法]
Option Explicit
Private Sub Command1_Click()
Dim s As String
Dim Result As Long
s = "27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 "
Result = FindNum(s, 13)
Print Result
Result = FindNum(s, 28)
Print Result
End Sub
Private Function FindNum(s As String, n As Long) As Long
Dim Num() As String
Dim i As Long
Num = Split(s)
For i = 0 To UBound(Num)
If Num(i) Mod n = 0 Then
FindNum = Num(i)
Exit Function
End If
If Num(i) Mod n = 1 Then
FindNum = Num(i)
Exit Function
End If
Next
End Function
'IDE中调试过的。