Excel精英培训网

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

用VBA编程计算百分数

[复制链接]
发表于 2012-12-24 15:21 | 显示全部楼层 |阅读模式
有A、B两列,在C中计算A除以B得到百分数,怎么样用VBA编程自动算出百分数,请高手解答,谢谢
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-12-24 15:27 | 显示全部楼层

  1. Sub cc()
  2. Dim Hx As Long
  3.   For Hx = 1 To 100
  4.     Cells(Hx, "C") = Cells(Hx, "A") / Cells(Hx, "B")
  5.   Next
  6. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2012-12-24 15:55 | 显示全部楼层
回复

使用道具 举报

发表于 2012-12-24 16:07 | 显示全部楼层
aland11 发表于 2012-12-24 15:55
不能运行啊,出错了
  1. Sub test()
  2. Dim i&, arr
  3. arr = Range("A1:C" & [A65536].End(3).Row)
  4. For i = 1 To UBound(arr, 1)
  5. arr(i, 3) = Application.Text(arr(i, 1) / arr(i, 2), "0.00%")
  6. Next i
  7. [A1].Resize(UBound(arr), 3) = arr
  8. End Sub
复制代码
回复

使用道具 举报

发表于 2012-12-24 16:18 | 显示全部楼层
aland11 发表于 2012-12-24 15:55
不能运行啊,出错了

for hx=1 to 100

代表 从第1 行到 100行

如果你的第1行中是表头,第二行才是数字
则改为
for hx=2 to 100

如果 A,或 B 有一列单元格中有空值,则会提示错误...

如果你的数据没到 100行,则自己修改!!

没有附件,只有这样给你说还有错误你还不想传附件,就你自己想办法了
回复

使用道具 举报

 楼主| 发表于 2012-12-24 16:21 | 显示全部楼层
我发附件吧,就是自动计算良品率和报废率

生产基本信息.rar

90.68 KB, 下载次数: 37

回复

使用道具 举报

发表于 2012-12-24 16:28 | 显示全部楼层
aland11 发表于 2012-12-24 16:21
我发附件吧,就是自动计算良品率和报废率

你这个问题可以使用 Change 事件,来实现自动完成输入数据就自动计算

需要你提供具体的计算说明

以你之前说的 A列/B列 你的A列是日期,B列是 批号,这肯定是不对的吧??

既然是具体的需要,则需要提供具体的计算方法,不然,写出来的代码你又不能用了!!
回复

使用道具 举报

 楼主| 发表于 2012-12-24 16:31 | 显示全部楼层
不好意思
良品率=良品数/生产总数
报废率=报废数/生产总数
回复

使用道具 举报

 楼主| 发表于 2012-12-24 16:32 | 显示全部楼层
麻烦您了,谢谢!
回复

使用道具 举报

发表于 2012-12-24 16:44 | 显示全部楼层
aland11 发表于 2012-12-24 16:21
我发附件吧,就是自动计算良品率和报废率

在 VBE 中双击 Sheet1(一车间) 工作表,然后把代码 Copy 进去

猜 的计算位置,代码有说明,自己照着修改吧

  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.   With Target
  3.     If .Count > 1 Then Exit Sub   '如果操作的单元格个数 大于 1 则退出
  4.     If .Row < 5 Then Exit Sub     '如果操作行数 小于 5 则退出
  5.     If InStr("4,5,7", .Column) = 0 Then Exit Sub  '如果操作的不是 DEF  列,则退出
  6.    
  7.     If InStr(" 0", Val(Cells(.Row, "D").Value)) > 0 Then Exit Sub   '如果对应 D列中数值为 0 则退出
  8.     If InStr(" 0", Val(Cells(.Row, "E").Value)) > 0 Then Exit Sub   '如果对应 E列中数值为 0 则退出
  9.     If InStr(" 0", Val(Cells(.Row, "G").Value)) > 0 Then Exit Sub   '如果对应 G列中数值为 0 则退出
  10.    
  11.     Application.EnableEvents = False    '关闭事件
  12.     Cells(.Row, "F").Value = Cells(.Row, "E").Value / Cells(.Row, "D").Value    '计算 比例
  13.     Cells(.Row, "H").Value = Cells(.Row, "G").Value / Cells(.Row, "D").Value    '计算 比例
  14.     Application.EnableEvents = True   '打开事件
  15.   End With
  16. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 16:37 , Processed in 0.874549 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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