0

问题陈述

我想在 Google 电子表格中计算以下公式,其中xy都是 n 行和 1 列的范围,t是一个变量,仅使用标准公式:

f(t,\mathbf{x},\mathbf{y})=\sum{min(tx_i,y_i)}

现在的情况

现在我将 x (say, A1:A10), y (say, B1:B10) 和 t (say, D1) 提供给自定义函数 ( myFunction(t, x, y), 见下文),但执行脚本是相当性能密集型的,所以我想知道是否有是一种无需使用自定义函数即可进行此计算的方法。

function myFunction(t, x, y)
{
    var sum = 0;
    for (var i = 0; i < x.length; i++)
    {
        var xi = parseInt(x[i]);
        var yi = parseInt(y[i]);
        sum += Math.min(t * xi, yi);
    }
    return sum;
}

在本例中,E1 将变为:=myFunction(D1, A1:A10, B1:B10)

期望的情况

我正在寻找类似的东西=SUM(MIN(D1 * A1:A10, B1:B10)),但当然也欢迎确认或有根据地猜测这是不可能的。

4

1 回答 1

1

我无法测试,但我认为以下公式可以满足您的需求。

=SUM(ARRAYFORMULA(IF(ARRAYFORMULA(D1 * A1:A10) < B1:B10; ARRAYFORMULA(D1 * A1:A10); B1:B10)))

更新

事实上,Jelle Fresen评论了一种更好的方法,消除了不必要的冗余。

=SUM(ARRAYFORMULA(IF(D1 * A1:A10 < B1:B10; D1 * A1:A10; B1:B10)))
于 2013-09-10T19:47:35.473 回答