加权平均数/数组公式和从单独 Sheet 中提取的查询

Weighted Average w/ Array Formula & Query That Pulls From A Separate Sheet

Link To 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是列字母的数值。