まず第一に、方程式はかなり単純化できます。これで、次のようになります。
=SUM(
(
(
(
(
(
(B2/E2) + (C2/E2) + (D2/E2)
)
)
*
0.419
)
)
)
+
(
(
(
(
( (B2/C2) + (B2/D2) ) / 2
)
+
(
( (C2/B2) + (D2/B2) ) / 3
)
-
3.4777
)
)
)
/
7
)
+
0.0017
範囲ではなく、個別のセルしかないため、SUM関数は役に立たないようです。また、多くの括弧を削除できます。したがって、関数は次のようになります。
(
(
B2/E2 + C2/E2 + D2/E2
)
*
0.419
+
(
( B2/C2 + B2/D2 ) / 2
+
( C2/B2 + D2/B2 ) / 3
-
3.4777
)
/
7
)
+
0.0017
それをワンライナーとして書く:
0.0017 + ((B2/E2 + C2/E2 + D2/E2) * 0.419 + ((B2/C2 + B2/D2) / 2 + (C2/B2 + D2/B2) / 3 - 3.4777) / 7)
PHP にするには、セル アドレスを変数に置き換えます。
0.0017 + (($members / $date + $topics / $date + $posts / $date) * 0.419 + (($members / $topics + $members / $posts) / 2 + ($topics / $members + $posts / $members) / 3 - 3.4777) / 7)
おそらく、小数点以下 4 桁で丸められた結果を返す関数を作成する必要があります。
function ranking($members, $posts, $topics, $date) {
$ranking = 0.0017 + (($members / $date + $topics / $date + $posts / $date) * 0.419 + (($members / $topics + $members / $posts) / 2 + ($topics / $members + $posts / $members) / 3 - 3.4777) / 7);
return round($ranking, 4);
}
そして、その関数を次のように呼び出すことができます (日付 E2 がどのように見えるかはわかりません。したがって、30000):
$ranking = ranking(50, 60, 20, 30000);
それが役立つことを願っています。