首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

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

2013-01-27 
比较数组,找出不符合规则的值?数据源PP-C450-40500-44600-54700-36800-38900-401000-421200-481400-521600

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

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 

热点排行