如何将公式编写为工作表函数

时间:2013-09-27 16:24:53

标签: vba optimization formula theory

我有一个循环超过1000个数据加载的大循环..而不是尽可能有效地执行此操作(将输出保存到数组然后在末尾打印),我一直在将值写入工作表然后复制和每次运行都粘贴到另一张纸上。

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

  1. 继续复制/粘贴每一行除了在当前工作表中执行此操作,然后在最后复制并粘贴最终数据表时,它是否更快?

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

  3. 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 & "))"
    

1 个答案:

答案 0 :(得分:0)

没有得到第一个问题。

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

对于第二个问题,或许以下内容可能会给你一个提示。

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

该函数将范围作为参数并输出平均值。因此,您可以通过调用

在单元格中使用它 例如

=avgVal(A1:D1)