读书人

比较数组找出不符合规则的值?该怎么

发布时间: 2013-01-27 13:56:17 作者: rapoo

比较数组,找出不符合规则的值?
数据源

PP-C
450-40
500-44
600-54
700-36
800-38
900-40
1000-42
1200-48
1400-52
1600-58
人工跟踪数据,找出的目标需求的规则是
当PP=450的C=40时
PP= 700时C=36
PP= 800时C=38

也就是找出C=40以后,小于40的C,C=36,C=38
**************************************
编了个小程序
Sub ll()
Dim Arr, oArr, Str As Double, Str1
Arr = Array(32, 40, 44, 54, 36, 38, 40, 42, 48, 52, 58)
oArr = Array(400, 450, 500, 600, 700, 800, 900, 1000, 1200, 1400, 1600)
''
For ii = 0 To UBound(Arr)
Str = Arr(ii)
For jj = ii + 1 To UBound(Arr)
If Str > Arr(jj) Then
Debug.Print ii, "→", Str, "→", oArr(jj), "→", Arr(jj)
End If
Next jj
Next ii
End Sub
*************************
其结果是
1 → 40 → 700 → 36
1 → 40 → 800 → 38
2 → 44 → 700 → 36
2 → 44 → 800 → 38
2 → 44 → 900 → 40
2 → 44 → 1000 → 42


3 → 54 → 700 → 36
3 → 54 → 800 → 38
3 → 54 → 900 → 40
3 → 54 → 1000 → 42
3 → 54 → 1200 → 48
3 → 54 → 1400 → 52


请问:各位高手还有其它的解法?谢谢和。



[解决办法]
我从你处理的结果理解,你要求 PP 值和 C 值同步增长。

如果你的 PP 值是单调递增的,就可以简化:


Dim dblMaxC As Double
For i = 0 To Ubound(Arr)
If Arr(i) > dblMaxC Then
dblMaxC = Arr(i)
Else
Debug.Print oArr(i), Arr(i)
End If
Next i


-------------------------------------
700 36
800 38
900 40
1000 42
1200 48
1400 52

读书人网 >VB

热点推荐