在Excel数组函数

时间:2017-01-27 19:11:34

标签: excel excel-formula

摘要:复杂(对我而言)多表数组公式停止在某一列中工作,我无法弄清楚原因。

设置:我正在编制一个电子表格来为梦幻棒球运动员建立价值。 Sheet1包含每个击球手的粘贴原始统计数据,Sheet2包含允许我确定最终值的中间计算。

  • 在示例公式中,Sheet1列C保存指定位置的文本字符串,而Sheet1列E保存每个玩家的蝙蝠数。
  • 第三个引用列与正在处理的统计信息相关联。
  • 前两个公式正在按预期工作,但我正在添加它们以帮助整体化过程。
  • 所有这三个公式都在Sheet2上实现。

公式A:计划通过平均“合格池”中的第157-171个值来计算给定统计量的“替换值”。合格值是玩家在击球时至少有200的值。共有12支球队,13名击球手等于156名联盟击球手。

{=(SUMPRODUCT(LARGE(IF(Sheet1!$E$2:$E$1500 > 199, Sheet1!V$2:V$1500),ROW(INDIRECT("$157:$171"))))/15)}

公式B:由于该位置的稀缺性,仅为捕手计算给定统计量的“替换值”。通过平均“合格池”中的第13到第16个值来工作。合格值是玩家在击球时至少有200个的值,并且描述其位置的单元格包含“C”。有12支球队时间1次需要的捕手等于12次联赛捕手。

{=(SUMPRODUCT(LARGE(IF((ISNUMBER(SEARCH("C",Sheet1!$C$2:$C$1500))) * (Sheet1!$E$2:$E$1500 > 199), Sheet1!V$2:V$1500),ROW(INDIRECT("$13:$16"))))/4)}

公式C:仅为非捕手计算给定统计量的“替换值”。通过平均“合格池”中的第145到第158个值来工作。合格值是公式B的倒数;目的是捕获位置单元格中不包含“C”的所有值,或者在击球时不至少有200个值。

{=(SUMPRODUCT(LARGE(IF(((ISNUMBER(SEARCH("C",Sheet1!$C$2:$C$1500))) + (Sheet1!$E$2:$E$1500 < 200) > 0),, Sheet1!V$2:V$1500),ROW(INDIRECT("$145:$158"))))/14)}

问题行为:公式与从外部源粘贴的统计信息完美配合。但是,Sheet1中添加了四列,其值来自粘贴值。例如,Sheet1!V2将包含以下公式:

=$Q2-(Sheet2!$O$5 * $E2)

Sheet2!O5包含一个基于Sheet1中值的公式,但不包含V列,只包含粘贴值。 Sheet2!O5的值为0.4825。

当应用于添加到Sheet1并从粘贴值派生的四个统计信息时,公式C会为每个统计信息返回0.

公式A和B按预期使用四个新统计信息,公式C使用所有粘贴值统计信息。

尝试解决方案:

  • 使用其值(而不是公式)替换新计算的统计信息

其它

  • 使用IF(ISNUMBER(SEARCH()))的原因是因为某些玩家可能有多个位置。我想用“C”隔离所有人,即使单元格中有更多字符。

  • 四个新统计信息的预期值与粘贴统计信息的预期值之间的一个区别是,我期望的结果(返回零)预计负数。没有应用公式C的其他统计数据期望或返回负值。但是,公式A和B返回四个新统计数据中预期的负值而没有问题。

问题:为什么此公式会从新添加的统计信息中返回0,以及我可以执行或测试以解决此问题?

谢谢。

1 个答案:

答案 0 :(得分:0)

我仍然不知道原因,但问题是通过添加引号来填充公式中的“值if true”部分而不是将两个逗号放在一起。

更正公式:

{=(SUMPRODUCT(LARGE(IF(((ISNUMBER(SEARCH("C",Sheet1!$C$2:$C$1500))) + (Sheet1!$E$2:$E$1500 < 200) > 0),"", Sheet1!V$2:V$1500),ROW(INDIRECT("$145:$158"))))/14)}

添加引号对数据为正的列的值没有影响,但是将数据为负的列从0切换到预期的负值。