所以我把這個大電子表格與普通的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