0

我有一个大循环,可以迭代 1000 个数据加载.. 而不是尽可能高效地执行此操作(将输出保存到数组,然后在最后打印),我一直在将值写入工作表,然后复制并粘贴到另一个每次运行的工作表。

我有几个理论和实践问题。

  1. 继续复制/粘贴每一行是否更快,除非在当前工作表中这样做,然后在最后复制并粘贴最终数据表?

  2. 如何将此函数重写为工作表公式。我目前不使用数组的原因是我不知道如何将此公式重写为非单元格公式。

Dim avg_rng As Range
Set avg_rng = Sheets("OrdCloseTrade").Range(Cells(strt_pt(end_ct), j), Cells(end_pt(end_ct) - 
1, j))
'Debug.Print sum_rng

Sheets("OrdCloseTrade").Cells(47, lent + 2).FormulaArray = _
"=AVERAGE(IF(ISNUMBER(" & avg_rng.Address & ")," & avg_rng.Address & "))"
4

1 回答 1

0

没有完全得到你的第一个问题。

但复制粘贴操作越少,执行速度就越快。

对于第二个问题,也许下面的内容可以给你一个提示。

Function avgVal(ByVal rng As Range)
    avgVal = Application.Evaluate("=average(if(isnumber(" & rng.Address & ")," & rng.Address & "))")
End Function

该函数将范围作为参数并输出平均值。所以你可以通过调用在单元格中使用它

=avgVal(A1:D1)例如

于 2013-09-27T17:29:05.377 回答