我有一张桌子:
W.Avg. Value per Point
中的公式尺寸"小"是这样的:
=AVERAGE.WEIGHTED(
FILTER(
INDEX(INDIRECT("recent_sdcalcs_size"),0,2),
INDEX(INDIRECT("recent_listings"),0,3) = H15,
INDEX(INDIRECT("recent_sdcalcs_size"),0,2)<>""
),
FILTER(
INDEX(INDIRECT("recent_listings"),0,5),
INDEX(INDIRECT("recent_listings"),0,3) = H15,
INDEX(INDIRECT("recent_sdcalcs_size"),0,2)<>""
)
)
H15
=&#34;小&#34;。
此公式有效...它将查找&#34; Small&#34;的所有定义值和权重。在另一张表上列出并给出这些值的加权平均值。问题是两个FILTER()函数返回的值和权重的样本数组不能代表 glows 的总体。
我知道发光的人口分布(% Chance
下的Glows
)。由此我创建了下表:
这给了我相对于每个尺寸的每个发光的代表性计数(反之亦然)。而且,到目前为止,一切都很好。
但最后一步是我挣扎的地方。当我查找尺寸&#34;小&#34;上面的FILTER()函数中的值我需要将返回到AVERAGE.WEIGHTED()的结果限制为(在此示例中)62 none,31 Dusky,15 Lucent,7 Bright,3 Brilliant,1 Radiant,没有令人眼花缭乱, StarLike,Crown Jewel或Titanic。根据&#34; Small&#34;在第二张图片中排。
电子表格全部来自here。
我实际上已经使用QUERY()&#34;&#34;限制&#34;特征。不幸的是,在电子表格中的任何地方使用QUERY()会使(不相关的)Google Apps脚本从执行约10秒钟到执行需要约200秒。这使得QUERY()在我的情况下无法使用。这就是我的所作所为(实际上没有工作,见评论):
=AVERAGE.WEIGHTED(
FILTER(
ARRAYFORMULA(QUERY(
INDIRECT("recent_data"),
"select ( E * F ) where (
D = '"&$H$27:$H$36&"' and
C = '"&$H15&"' and
V > 0
) limit "&$C46:$L46
)),
ISNUMBER(ARRAYFORMULA(QUERY(
INDIRECT("recent_data"),
"select ( E * F ) where (
D = '"&$H$27:$H$36&"' and
C = '"&$H15&"' and
V > 0
) limit "&$C46:$L46
)))
),
FILTER(
ARRAYFORMULA(QUERY(
INDIRECT("recent_data"),
"select F where (
D = '"&$H$27:$H$36&"' and
C = '"&$H15&"' and
V > 0
) limit "&$C46:$L46
)),
ISNUMBER(ARRAYFORMULA(QUERY(
INDIRECT("recent_data"),
"select F where (
D = '"&$H$27:$H$36&"' and
C = '"&$H15&"' and
V > 0
) limit "&$C46:$L46
)))
)
)
我也试过使用SORTN()。但由于种种原因,这种情况无法发挥作用。
=ARRAYFORMULA(SORTN(FILTER(
INDEX(INDIRECT("recent_sdcalcs_size"),0,2),
INDEX(INDIRECT("recent_listings"),0,3) = H15,
INDEX(INDIRECT("recent_sdcalcs_size"),0,2)<>""
),TRANSPOSE($C46:$L46)))