所以我把这个大电子表格与普通的excel函数放在一起,效果很好,但我想加快速度,并使用vba和粘贴来缩小文件大小静态值,而不是参考值,这会降低性能(工作簿现在大约为20 MB,并且将继续增长)excel 2007 - 计算VBA中一系列单元格的z分数
所以我知道我想完成但我努力把它放在一个简洁表达,因为我的VBA经验仍处于起步阶段,所以任何帮助将不胜感激。
z得分=(数 - 平均的所有数字的)/(所有数字的STDEV)
工作表( “中继”)值( “C32”)包含的所有数字 工作表的平均值(”。接力“)值(” C33“)包含了所有的数字
的STDEV我想要做什么,是在列工作表(” Hitterscalc CB“)的范围(”:CB“),calcuate的Z - 对应于该列中所有行的工作表(“Hitterscalc”)。范围(“J:J”)中的对应值,其相应的A列单元格不等于“”,并且其相应的AB列等于1
有没有人对此有简洁的陈述?我可以把它大致做到逐个单元格,但是当我开始放入循环来遍历所有列时,它全部在我的代码中崩溃,并且在我的头部不幸。
感谢您的时间
Application.ScreenUpdating = False
Worksheets("hitterscalc").Range("cb2").FormulaR1C1 = _
"=IF(OR(RC[-79]="""",RC[-52]<>1,Settings!R4C[-74]<>""yes""),"""",(RC[-70]-relay!R32C[-77])/relay!R33C[-77])"
Sheets("HittersCalc").Select
Range("CB2").Select
Selection.AutoFill Destination:=Range("CB2:CB701") Range("CB2:CB701").Select Columns("CB:CB").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False
这一切都与公式。一旦你有了它,然后使用宏记录器为第一行重新使用公式,然后让它自动填充,最后复制和粘贴值。关闭宏记录器并查看代码。它会给你一个很好的起点。您可能有兴趣使用Range(..)。End(xlDown)来计算您需要自动填充多少距离 – Dan 2013-02-08 13:29:53
有没有办法进一步清除这个问题? Application.ScreenUpdating = False Worksheets(“hitterscalc”)。Range(“cb2”)。FormulaR1C1 = _ “= IF(OR(RC [-79] =”“”“,RC [-52] <> 1,Settings!R4C [-74] <>“”yes“”),“”“”,(RC [-70] -relay!R32C [-77])/ relay!R33C [-77])“ Sheets选择 Selection.AutoFill Destination:= Range(“CB2:CB701”) 范围(“CB2:CB701”)。选择 列(“CB:CB”)选择 范围)。选择 Selection.Copy 选择。PasteSpecial Paste:= xlPasteValues,Operation:= xlNone,SkipBlanks _ := False,Transpose:= False Application.CutCopyMode = False – kamelkid2 2013-02-08 13:59:58
而不是像这样的代码添加到您的答案中,因为它很难阅读除此以外。这次我已经为你编辑了它。 – Dan 2013-02-08 15:05:53