0

問題文

Google スプレッドシートで次の数式を計算したいと思います。ここで、xyは両方とも n 行 1 列の範囲であり、tは変数であり、標準の数式のみを使用します。

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

現在の状況

現在、A1:A10x (たとえばB1:B10、カスタム関数を使用せずにこの計算を行う方法です。D1myFunction(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 に答える