dutreil2008-10-02 13:40:41
在一个excel文件里有许多worksheet,sheetname, a(1), b(1),c(1) 到d(1)。
我想在一个worksheet (sheetname) 里面的range从o74到o78定义一个公式function.
但是function里计算的值在另外的worksheets (graphname)里面。graphname是从a(1), b(1),c(1) 到d(1)。再另外的loop里定义的,如下
graphname = ActiveSheet.Name 这个没有error

我用For Each Sheet In Sheets,定义graphname 的值从a(1)到d(1)。没有问题。

但是问题error出在定义这个function上,如下,

Sub correction()

Sheets(sheetname).Select
Range("o74").Select

ActiveCell.FormulaR1C1 = _
"=IF(R[-5]C>0,SUMIF(' 'graphname'!R[-64]C[-1]:R[9925]C[-1],""<1e36"")/COUNTIF(' 'graphname'!R[-64]C[-1]:R[9925]C[-1],""<1e36""),n.a.)"

它无论如何不能把function 里面的graphname转成他对应的值,如a(1),这样我就没有办法在o74得到正确的结果,

o74的值是=IF(COUNTIF(graphname!O11:O10000,"<1e36")>0,(SUMIF(graphname!O11:O10000,"<1e36")/COUNTIF(graphname!O11:O10000,"<1e36")),n.a.)

而我想要得是=IF(COUNTIF('a(1)'!O11:O10000,"<1e36")>0,(SUMIF('a(1)'!O11:O10000,"<1e36")/COUNTIF('a(1)'!O11:O10000,"<1e36")),n.a.)

请问我应该如何才可以把这个问题解决,是要从新定义graphname还是function中需要特殊的格式才能计算graphname对应的值,而不是graphname这个名词。

我对vb不熟,希望各位高手讲的具体些,谢谢。