|
本帖最后由 mathking77 于 2016-6-26 17:43 编辑
A列和B列是数据, CDE列是我用函数公式得出的数据 是我需要的值
能不能用VBA代码直接得出这些结果
运行代码后 得到的结果 能够直接覆盖掉AB列原数据,E列的数据放在C列
我用的函数公式是
C,D列: 小数点后小于0.33的都舍去,0.33-0.83的都算成0.5,大于0.83的都进一位
E列:D列大于3就记1
求教 用VBA代码应该如何写?
结果会生成在H-J - Sub xx()
- Dim arr, brr()
- arr = Sheet1.Range("A1:B17")
- ReDim brr(1 To UBound(arr, 1))
- For i = 1 To UBound(arr, 1)
- arr(i, 1) = 取值(arr(i, 1))
- arr(i, 2) = 取值(arr(i, 2))
- If arr(i, 2) > 3 Then brr(i) = 1
- Next
- Sheet1.Range("H1").Resize(UBound(arr, 1), 2) = arr
- Sheet1.Range("J1").Resize(UBound(arr, 1), 1) = Application.WorksheetFunction.Transpose(brr)
- End Sub
- Function 取值(ByVal x As Double) As Double
- If x - Int(x) > 0.83333 Then
- 取值 = Round(x, 0)
- ElseIf x - Int(x) < 0.33333 Then
- 取值 = Int(x)
- Else
- 取值 = Int(x) + 0.5
- End If
- End Function
复制代码,可以自己改一下参数,生成到A-C
|
|