|
楼主 |
发表于 2016-8-28 20:30
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
但是我的代码有点多
您能给我看看 怎么变Q 回避开
- Sub 本地化()
- Dim Arr, r&
- Arr = [a1].CurrentRegion
- r = 2
- Do While Arr(r, 5) <> "" '循环r行E列不为空的值
- If Arr(r, 5) > 0 Then Arr(r, 7) = Int(Arr(r, 5)) '如果r行E列值大于等于0,那么i行E列=G列单元格值
- If Arr(r, 7) = "" Then Arr(r, 7) = Int(Arr(r, 5)) '如果G列为空,G等于E的值
- If Arr(r, 7) >= 0 Then Arr(r, 7) = Int(Arr(r, 7))
- If Arr(r, 7) >= 0 Then Arr(r, 13) = Round(Arr(r, 7) * 0.856784123165432, 0) '如果r行E列值大于等于0,那么i行M列 值等于i行M列*0.85
- If Arr(r, 9) = "" Then Arr(r, 9) = Round(Arr(r, 7) * 0.856784123165432, 0) '如果r行I列值为空,那么i行I列*0.85的整数.
- If Arr(r, 9) = 0 Then Arr(r, 9) = Round(Arr(r, 7) * 0.856784123165432, 0) '如果r行I列值为空,那么i行I列*0.85的整数
- If Arr(r, 9) > 0 Then Arr(r, 9) = Int(Arr(r, 9)) 'I列不为小数
- If Arr(r, 6) > 0 Then Arr(r, 15) = Val(Arr(r, 6)) 'K列等于F列值为数字
- If Arr(r, 9) >= Arr(r, 15) Then Arr(r, 9) = Round(Arr(r, 15), 0) '如果I列>=K,那么I=K
- If Arr(r, 9) >= Arr(r, 13) Then Arr(r, 9) = Arr(r, 13) '如果I列>=M,那么I=M
- If Arr(r, 7) <= 2 And Arr(r, 7) > 0 Then Arr(r, 9) = Round(Arr(r, 7) * 0.58, 0)
- If Arr(r, 9) <> "" And Arr(r, 9) <> 0 Then Arr(r, 15) = Arr(r, 7) / Arr(r, 9) '验证
- If Arr(r, 15) >= 2.8 Then Arr(r, 9) = Round(Arr(r, 7) * 0.6275, 0)
- If Arr(r, 9) > 10 And Right(Arr(r, 9), 1) <= 3 Then Arr(r, 9) = Mid(Arr(r, 9), 1, Len(Arr(r, 9)) - 1) & 0
- If Arr(r, 5) < 1 And Arr(r, 5) > 0 Then Arr(r, 7) = Arr(r, 5)
- If Arr(r, 5) < 1 And Arr(r, 5) > 0 Then Arr(r, 9) = Arr(r, 5)
- If Arr(r, 15) >= 0 Then Arr(r, 15) = "" ' 删除K,M里面的值 成功
- If Arr(r, 13) >= 0 Then Arr(r, 13) = "" ' 删除K,M里面的值 成功
- r = r + 1
- If r > UBound(Arr) Then Exit Do
- Loop
- [a1].CurrentRegion = Arr
- End Sub
复制代码 |
|