Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1981|回复: 2

[已解决]这几个函数公式怎么转化成VBA代码?

[复制链接]
发表于 2016-6-25 18:45 | 显示全部楼层 |阅读模式
本帖最后由 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代码应该如何写?



最佳答案
2016-6-25 19:39
结果会生成在H-J
  1. Sub xx()
  2.     Dim arr, brr()
  3.     arr = Sheet1.Range("A1:B17")
  4.     ReDim brr(1 To UBound(arr, 1))
  5.     For i = 1 To UBound(arr, 1)
  6.         arr(i, 1) = 取值(arr(i, 1))
  7.         arr(i, 2) = 取值(arr(i, 2))
  8.         If arr(i, 2) > 3 Then brr(i) = 1
  9.     Next
  10.     Sheet1.Range("H1").Resize(UBound(arr, 1), 2) = arr
  11.     Sheet1.Range("J1").Resize(UBound(arr, 1), 1) = Application.WorksheetFunction.Transpose(brr)
  12. End Sub
  13. Function 取值(ByVal x As Double) As Double
  14.     If x - Int(x) > 0.83333 Then
  15.         取值 = Round(x, 0)
  16.     ElseIf x - Int(x) < 0.33333 Then
  17.         取值 = Int(x)
  18.     Else
  19.         取值 = Int(x) + 0.5
  20.     End If
  21. End Function
复制代码
,可以自己改一下参数,生成到A-C

数据.rar

5.51 KB, 下载次数: 7

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-6-25 19:39 | 显示全部楼层    本楼为最佳答案   
结果会生成在H-J
  1. Sub xx()
  2.     Dim arr, brr()
  3.     arr = Sheet1.Range("A1:B17")
  4.     ReDim brr(1 To UBound(arr, 1))
  5.     For i = 1 To UBound(arr, 1)
  6.         arr(i, 1) = 取值(arr(i, 1))
  7.         arr(i, 2) = 取值(arr(i, 2))
  8.         If arr(i, 2) > 3 Then brr(i) = 1
  9.     Next
  10.     Sheet1.Range("H1").Resize(UBound(arr, 1), 2) = arr
  11.     Sheet1.Range("J1").Resize(UBound(arr, 1), 1) = Application.WorksheetFunction.Transpose(brr)
  12. End Sub
  13. Function 取值(ByVal x As Double) As Double
  14.     If x - Int(x) > 0.83333 Then
  15.         取值 = Round(x, 0)
  16.     ElseIf x - Int(x) < 0.33333 Then
  17.         取值 = Int(x)
  18.     Else
  19.         取值 = Int(x) + 0.5
  20.     End If
  21. End Function
复制代码
,可以自己改一下参数,生成到A-C

数据.rar

10.15 KB, 下载次数: 9

回复

使用道具 举报

 楼主| 发表于 2016-6-25 22:56 | 显示全部楼层
本帖最后由 mathking77 于 2016-6-25 22:57 编辑
老司机带带我 发表于 2016-6-25 19:39
结果会生成在H-J,可以自己改一下参数,生成到A-C

好的 非常感谢,请问大神 这个根据日期取周几数据的和 代码该如何写?http://www.excelpx.com/thread-419280-1-1.html
我根据你上次帮我做的就餐代码 自己尝试修改写,我先插了列星期数 打算把星期列中1-5的数据相加 你有没有办法直接根据日期 不插星期列来做?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 17:50 , Processed in 0.183138 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表