加权平均数/数组公式和从单独 Sheet 中提取的查询
Weighted Average w/ Array Formula & Query That Pulls From A Separate Sheet
所以我得到了下面包含的数组公式。我需要对其进行调整,使其成为基于存储在 sheet 标题变量中的变量的加权平均值。
当前公式:
=ARRAYFORMULA(QUERY(
{PROPER(ADP!A3:A),ADP!E3:S;
PROPER(ADP!J3:J),ADP!S3:S;
PROPER(ADP!Z3:Z),ADP!AG3:AG},
"select Col1, Sum(Col2)
where
Col2 is not null and
Col1 is not null
group by Col1
order by Sum(Col2)
label
Col1 'PLAYER',
Sum(Col2) 'ADP AVG'"))
这是我认为可行但行不通的方法:
=ARRAYFORMULA(QUERY(
{PROPER(ADP!A3:A),ADP!E3:E*(Variables!$F/Variables!$F);
PROPER(ADP!J3:J),ADP!S3:S*(Variables!$F/Variables!$F);
PROPER(ADP!Z3:Z),ADP!AG3:AG*(Variables!$F/Variables!$F)},
"select Col1, Sum(Col2)
where
Col2 is not null and
Col1 is not null
group by Col1
order by Sum(Col2)
label
Col1 'PLAYER',
Sum(Col2) 'ADP AVG'"))
我想得到的是K中的值乘以VariablesF11中的值,Y中的值乘以VariablesF12中的值,AL中的值乘以F13中的变量。然后将该分子除以 VariablesF14 中的值。
经过我们广泛的交谈,我在这里提供我们想出的答案,希望它能以某种方式帮助其他人。但是您的问题与公式的技术细节无关,而与多个数据源的结构以及将数据整合在一起的相关逻辑有关。
这里是主要公式:
={"Adjusted
Ranking
by " & Variables!F21;
arrayformula(
if(A2:A<>"",
( if(((D2:D>0) * Source1Used),D2:D,Variables!$F)*Variables!$F
+ if(((F2:F>0) * Source2Used),F2:F,Variables!$F)*Variables!$F
+ if(((H2:H>0) * Source3Used),H2:H,Variables!$F)*Variables!$F
+ if(((J2:J>0) * Source4Used),J2:J,Variables!$F)*Variables!$F
+ if(((L2:L>0) * Source5Used),L2:L,Variables!$F)*Variables!$F
+ if(((N2:N>0) * Source6Used),N2:N,Variables!$F)*Variables!$F )) / Variables!$F) }
A2:A是球员名单。 D2:D>0
测试该玩家是否具有从特定数据源获得的评分。
Source1Used
是复选框单元格的命名范围,用户可以在其中指示该数据源是否要包含在计算中。
此公式创建一个平均值,使用 1 到 6 个可能的来源,用户选择table。
给出一个特定来源的评级值的公式如下:
={"Rating in
Source1";ArrayFormula(if(A2:A<>"",if(C2:C,vlookup(A2:A,indirect("ADP!$" & ADP!E3 & ":" & ADP!E5),ADP!E6-ADP!E4+1,0),0),""))}
这会在 A 列中取一个名字,检查它是否列在特定来源的数据中,如果是,它会从数据源中拉回评级值。使用 INDIRECT
是因为每个数据源的列位置可能不同,但从单元格 ADP!E3 和 E5 中的固定 table 获得。 E4和E6是列字母的数值。
所以我得到了下面包含的数组公式。我需要对其进行调整,使其成为基于存储在 sheet 标题变量中的变量的加权平均值。
当前公式:
=ARRAYFORMULA(QUERY(
{PROPER(ADP!A3:A),ADP!E3:S;
PROPER(ADP!J3:J),ADP!S3:S;
PROPER(ADP!Z3:Z),ADP!AG3:AG},
"select Col1, Sum(Col2)
where
Col2 is not null and
Col1 is not null
group by Col1
order by Sum(Col2)
label
Col1 'PLAYER',
Sum(Col2) 'ADP AVG'"))
这是我认为可行但行不通的方法:
=ARRAYFORMULA(QUERY(
{PROPER(ADP!A3:A),ADP!E3:E*(Variables!$F/Variables!$F);
PROPER(ADP!J3:J),ADP!S3:S*(Variables!$F/Variables!$F);
PROPER(ADP!Z3:Z),ADP!AG3:AG*(Variables!$F/Variables!$F)},
"select Col1, Sum(Col2)
where
Col2 is not null and
Col1 is not null
group by Col1
order by Sum(Col2)
label
Col1 'PLAYER',
Sum(Col2) 'ADP AVG'"))
我想得到的是K中的值乘以VariablesF11中的值,Y中的值乘以VariablesF12中的值,AL中的值乘以F13中的变量。然后将该分子除以 VariablesF14 中的值。
经过我们广泛的交谈,我在这里提供我们想出的答案,希望它能以某种方式帮助其他人。但是您的问题与公式的技术细节无关,而与多个数据源的结构以及将数据整合在一起的相关逻辑有关。
这里是主要公式:
={"Adjusted
Ranking
by " & Variables!F21;
arrayformula(
if(A2:A<>"",
( if(((D2:D>0) * Source1Used),D2:D,Variables!$F)*Variables!$F
+ if(((F2:F>0) * Source2Used),F2:F,Variables!$F)*Variables!$F
+ if(((H2:H>0) * Source3Used),H2:H,Variables!$F)*Variables!$F
+ if(((J2:J>0) * Source4Used),J2:J,Variables!$F)*Variables!$F
+ if(((L2:L>0) * Source5Used),L2:L,Variables!$F)*Variables!$F
+ if(((N2:N>0) * Source6Used),N2:N,Variables!$F)*Variables!$F )) / Variables!$F) }
A2:A是球员名单。 D2:D>0
测试该玩家是否具有从特定数据源获得的评分。
Source1Used
是复选框单元格的命名范围,用户可以在其中指示该数据源是否要包含在计算中。
此公式创建一个平均值,使用 1 到 6 个可能的来源,用户选择table。
给出一个特定来源的评级值的公式如下:
={"Rating in
Source1";ArrayFormula(if(A2:A<>"",if(C2:C,vlookup(A2:A,indirect("ADP!$" & ADP!E3 & ":" & ADP!E5),ADP!E6-ADP!E4+1,0),0),""))}
这会在 A 列中取一个名字,检查它是否列在特定来源的数据中,如果是,它会从数据源中拉回评级值。使用 INDIRECT
是因为每个数据源的列位置可能不同,但从单元格 ADP!E3 和 E5 中的固定 table 获得。 E4和E6是列字母的数值。