Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: ccq000000

[已解决]再次求助(把表格中的公式改成VBA运行)

[复制链接]
发表于 2014-2-26 23:52 | 显示全部楼层
不知道符不符合你的要求,新增了一个表,答案写在新增的表里

tryout.rar

14.25 KB, 下载次数: 5

回复

使用道具 举报

 楼主| 发表于 2014-2-27 00:01 | 显示全部楼层
本帖最后由 ccq000000 于 2014-2-27 00:10 编辑
pengyx 发表于 2014-2-26 23:52
不知道符不符合你的要求,新增了一个表,答案写在新增的表里


我来比较一下你不介意吧,我肯定会评一个最佳答案的.还有请将这两句代码解释一下(粗体字)
Sub jb()
a = Sheet1.[iv5].End(xlToLeft).Column       ([iv5]是什么意思?)
b = Sheet1.[a65536].End(3).Row  (End(3)是什么意思?)
With Sheet1
For i = 5 To b '行
For j = 12 To a Step 4
If .Cells(i, j + 2) <> "" Then
a1 = a1 + .Cells(i, j)
a2 = a2 + .Cells(i, j + 1)
a3 = a3 + .Cells(i, j + 2)
a4 = a4 + .Cells(i, j + 3)
.Range("f" & i) = a1
.Range("g" & i) = a2
.Range("h" & i) = a3
.Range("i" & i) = a4
.Range("j" & i) = .Range("d" & i) + a1 - a3
.Cells(i, j + 3) = Round((a2 + .Range("e" & i)) * .Cells(i, j + 2) / (a1 + .Range("d" & i)), 2)
End If
Next
a1 = 0: a2 = 0: a3 = 0: a4 = 0       (这是重新赋值吗?)
Next
End With
End Sub

回复

使用道具 举报

 楼主| 发表于 2014-2-27 00:30 | 显示全部楼层
pengyx 发表于 2014-2-26 22:30
是否达到要求,如没有我好来抢金币。达到了我就不下附件了

还想你对程序进行解释一下,特别是下面黑体字部分,谢谢
Sub jb()
a = Sheet1.[iv5].End(xlToLeft).Column       ([iv5]是什么意思?)
b = Sheet1.[a65536].End(3).Row  (End(3)是什么意思?)
With Sheet1
For i = 5 To b '行
For j = 12 To a Step 4
If .Cells(i, j + 2) <> "" Then
a1 = a1 + .Cells(i, j)
a2 = a2 + .Cells(i, j + 1)
a3 = a3 + .Cells(i, j + 2)
a4 = a4 + .Cells(i, j + 3)
.Range("f" & i) = a1
.Range("g" & i) = a2
.Range("h" & i) = a3
.Range("i" & i) = a4
.Range("j" & i) = .Range("d" & i) + a1 - a3
.Cells(i, j + 3) = Round((a2 + .Range("e" & i)) * .Cells(i, j + 2) / (a1 + .Range("d" & i)), 2)
End If
Next
a1 = 0: a2 = 0: a3 = 0: a4 = 0       (这是重新赋值吗?)
Next
End With
End Sub

回复

使用道具 举报

 楼主| 发表于 2014-2-27 00:32 | 显示全部楼层
pengyx 发表于 2014-2-26 22:30
是否达到要求,如没有我好来抢金币。达到了我就不下附件了

还想你对程序进行解释一下,特别是下面黑体字部分,谢谢
Sub jb()
a = Sheet1.[iv5].End(xlToLeft).Column       ([iv5]是什么意思?)
b = Sheet1.[a65536].End(3).Row  (End(3)是什么意思?)
With Sheet1
For i = 5 To b '行
For j = 12 To a Step 4
If .Cells(i, j + 2) <> "" Then
a1 = a1 + .Cells(i, j)
a2 = a2 + .Cells(i, j + 1)
a3 = a3 + .Cells(i, j + 2)
a4 = a4 + .Cells(i, j + 3)
.Range("f" & i) = a1
.Range("g" & i) = a2
.Range("h" & i) = a3
.Range("i" & i) = a4
.Range("j" & i) = .Range("d" & i) + a1 - a3
.Cells(i, j + 3) = Round((a2 + .Range("e" & i)) * .Cells(i, j + 2) / (a1 + .Range("d" & i)), 2)
End If
Next
a1 = 0: a2 = 0: a3 = 0: a4 = 0       (这是重新赋值吗?)
Next
End With
End Sub

回复

使用道具 举报

 楼主| 发表于 2014-2-27 00:34 | 显示全部楼层
pengyx 发表于 2014-2-26 22:30
是否达到要求,如没有我好来抢金币。达到了我就不下附件了

还想你对程序进行解释一下,特别是下面黑体字部分,谢谢
Sub jb()
a = Sheet1.[iv5].End(xlToLeft).Column       ([iv5]是什么意思?)
b = Sheet1.[a65536].End(3).Row  (End(3)是什么意思?)
With Sheet1
For i = 5 To b '行
For j = 12 To a Step 4
If .Cells(i, j + 2) <> "" Then
a1 = a1 + .Cells(i, j)
a2 = a2 + .Cells(i, j + 1)
a3 = a3 + .Cells(i, j + 2)
a4 = a4 + .Cells(i, j + 3)
.Range("f" & i) = a1
.Range("g" & i) = a2
.Range("h" & i) = a3
.Range("i" & i) = a4
.Range("j" & i) = .Range("d" & i) + a1 - a3
.Cells(i, j + 3) = Round((a2 + .Range("e" & i)) * .Cells(i, j + 2) / (a1 + .Range("d" & i)), 2)
End If
Next
a1 = 0: a2 = 0: a3 = 0: a4 = 0       (这是重新赋值吗?)
Next
End With
End Sub

回复

使用道具 举报

 楼主| 发表于 2014-2-27 00:38 | 显示全部楼层
pengyx 发表于 2014-2-26 23:52
不知道符不符合你的要求,新增了一个表,答案写在新增的表里

还想你对程序进行解释一下,特别是下面黑体字部分,谢谢
Sub jb()
a = Sheet1.[iv5].End(xlToLeft).Column       ([iv5]是什么意思?)
b = Sheet1.[a65536].End(3).Row  (End(3)是什么意思?)
With Sheet1
For i = 5 To b '行
For j = 12 To a Step 4
If .Cells(i, j + 2) <> "" Then
a1 = a1 + .Cells(i, j)
a2 = a2 + .Cells(i, j + 1)
a3 = a3 + .Cells(i, j + 2)
a4 = a4 + .Cells(i, j + 3)
.Range("f" & i) = a1
.Range("g" & i) = a2
.Range("h" & i) = a3
.Range("i" & i) = a4
.Range("j" & i) = .Range("d" & i) + a1 - a3
.Cells(i, j + 3) = Round((a2 + .Range("e" & i)) * .Cells(i, j + 2) / (a1 + .Range("d" & i)), 2)
End If
Next
a1 = 0: a2 = 0: a3 = 0: a4 = 0       (这是重新赋值吗?)
Next
End With
End Sub

回复

使用道具 举报

发表于 2014-2-27 11:28 | 显示全部楼层
别贴代码出来,代码可能存在问题.我对函数公式不熟,你的要求我猜的.[iv5]表示单元格IV5,End(3)就是END(XLUP)不规范写法,a1 = 0: a2 = 0: a3 = 0: a4 = 0 没有这句会出现累加
回复

使用道具 举报

 楼主| 发表于 2014-2-27 13:47 | 显示全部楼层
pengyx 发表于 2014-2-27 11:28
别贴代码出来,代码可能存在问题.我对函数公式不熟,你的要求我猜的.表示单元格IV5,End(3)就是END(XLUP)不规范 ...

谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 07:16 , Processed in 0.252027 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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