0.58 圆整为 0.5
1.56 圆整为 1
....
6.38 圆整为 6
....
9.98 圆整为 10
....
15.96 圆整为 1664.14 圆整为 63
....
101.1 圆整为 100
通过数据分析,采用 x_Delat < 1,在对几个数据进行圆整有其局限性.如: 64.14 圆整为 63,好像模型不好建立.
而在实际操作中,其圆整规则下楼下数据.
1.56 圆整为 1
....
6.38 圆整为 6
....
9.98 圆整为 10
....
15.96 圆整为 1664.14 圆整为 63
....
101.1 圆整为 100
通过数据分析,采用 x_Delat < 1,在对几个数据进行圆整有其局限性.如: 64.14 圆整为 63,好像模型不好建立.
而在实际操作中,其圆整规则下楼下数据.
0.8 ----- 0.8
1 ----- 1.06
1.5 ----- 1.56
2 ----- 2.02
2.5 ----- 2.5
3 ----- 3
4 ----- 4.1
5 ----- 5
5 ----- 5.1
6 ----- 6
6 ----- 6.38
8 ----- 8.2
8 ----- 8.38
10 ----- 9.98
10 ----- 10.36
12 ----- 12.48
12 ----- 12.36
16 ----- 15.96
16 ----- 16.06
20 ----- 20.46
20 ----- 20.6
25 ----- 25.1
25 ----- 25.68
32 ----- 32
32 ----- 31.98
40 ----- 40.18
40 ----- 40.02
50 ----- 49.62
50 ----- 50.54
63 ----- 64.14
63 ----- 64.14
80 ----- 79.74
80 ----- 81.62
100 ----- 100.94
100 ----- 101.72数据附件见http://club.excelhome.net/viewthread.php?tid=595348&extra=page%3D1&frombbs=1
X = getC(71)
MsgBox X
End Sub
Function getC(b)
aa = Array(0.5, 0.8, 1, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10, 12, 16, 20, 25, 32, 40, 50, 63, 80, 100)
If b < 0.5 Then getC = 0.5
If b > 100 Then getC = 100
If getC = 0 Then
For i = 0 To 21
If b >= aa(i) And b <= aa(i + 1) Then
If aa(i + 1) + aa(i) < b + b Then
getC = aa(i + 1)
Else
getC = aa(i)
End If
Exit For
End If
Next
End IfEnd Function
谢谢,目标实现.
看起来比较简单,也试着按这种方法编了个程序,没有成功
好像是这条语句
aa(i + 1) + aa(i) < b + b需要消化理解其算法.
这是一种约定俗成的圆整规则,建立数据模型有点说不清.aa = Array(0.5, 0.8, 1, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10, 12, 16, 20, 25, 32, 40, 50, 63, 80, 100)三楼大侠结果,目标结果实现.aa(i + 1) + aa(i) < b + b
=
aa(i + 1) - b < b - aa(i)
有了这个解释,加快消化理解的速度,谢谢ldy888的回帖.
Select Case x
Case Is < 0.65
Grounding = 0.5
Case Is < 0.9
Grounding = 0.8
Case Is < 1.25
Grounding = 1
Case Is < 1.75
Grounding = 1.5
Case Is < 2.25
Grounding = 2
Case Is < 2.75
Grounding = 2.5
Case Is < 3.5
Grounding = 3
Case Is < 4.5
Grounding = 4
Case Is < 5.5
Grounding = 5
Case Is < 7
Grounding = 6
Case Is < 9
Grounding = 8
Case Is < 11
Grounding = 10
Case Is < 14
Grounding = 12
Case Is < 18
Grounding = 16
Case Is < 22.5
Grounding = 20
Case Is < 28.5
Grounding = 25
Case Is < 36
Grounding = 32
Case Is < 45
Grounding = 40
Case Is < 56.5
Grounding = 50
Case Is < 71.5
Grounding = 63
Case Is < 90
Grounding = 80
Case Else
Grounding = 100
End SelectEnd Function
If Abs(aa(i) - b) < Abs(aa(i + 1) - b) Then
getC = aa(i)
Else
getC = aa(i + 1)
End If
取差值小的归档