根据 B 列和自动填充结果中的单元格值,检查其他 sheet 的 2 列 (C&D) 中是否有更高的值

Check if there are higher values in 2 columns (C&D) on other sheet based on cell value in column B & autopopulate result

Link to Google Sheet Sample

在 sheet 'Calc' 的 E 列中,我想检查 sheet 'Data' 中是否有一个人具有相同的 A 值,但具有更高的值在 B 和 C 上。最终我想 Return 'No' 如果不是,return 'yes' 如果是。如果有一个具有相同 A 值的人在 B 上具有更高的值但在 C 上没有(反之亦然)return 'maybe' 以及此人的姓名。 使用 returned 值自动填充 E。

'Calc' 中 B、C 和 D 列中的值是动态的,会根据其他计算而改变。 'Data' 中的 B、C 和 D 值是静态的。两列的长度可以不同。

一些例子:
sheet 'Calc' 中的名称 1 的值为 A89、B70、C70。
sheet 'Data' 中的人 A 的值为 A89、B71、C75。没有其他人在 B 或 C 上都具有 A89 和更高的值。
Return 'Yes'.

名称 1 in sheet 'Calc' 的值为 A89、B70、C70。
sheet 'Data' 中的人 A 的值为 A89、B60、C55。没有其他人在 B 或 C 上都具有 A89 和更高的值。
Return 'No'.

名称 1 in sheet 'Calc' 的值为 A89、B70、C70。
sheet 'Data' 中的人 A 的值为 A89、B71、C55。没有其他人在 B 或 C 上都具有 A89 和更高的值。
Return 'Maybe: Person A'.

名称 1 in sheet 'Calc' 的值为 A89、B70、C70。
sheet 'Data' 中的人 A 的值为 A89、B71、C55。 sheet 'Data' 中的人物 B 的值为 A89、B55、C71。与 sheet 'Data' 中 A89 的人相比,A 在 B 上的价值最高,但 C 低于 sheet 'Calc' 中的 Name 1。与 sheet 'Data' 中 A89 中的人相比,B 在 C 上的价值最高,但 B 低于 sheet 'Calc' 中 Name 1 的人。 Return 'Maybe: Person A, Person B'.

我试图通过将 =ARRAYFORMULA 与 MAX 组合来获取 sheet 'Calc' 中的最大值来开始,但我得到了 'different number' 数组错误或一切都只是与B3相比。

错误:

=ARRAYFORMULA(IF(ISBLANK($A3:$A);;$B3&":"&MAX((Data!$B3:$B=$B3)*Data!$C3:$C)&":"&MAX((Data!$B3:$B=$B3)*Data!$D3:$D)))

只用B3计算:

=ARRAYFORMULA(IF(ISBLANK($A3:$A);;$B3&":"&MAX((Data!$B3:$B=$B3)*Data!$C3:$C)&":"&MAX((Data!$B3:$B=$B3)*Data!$D3:$D)))

编辑:我删除了开放式范围,这至少消除了我得到的错误,但它仍然没有 return 所需的数字(它 return 为零或属于第一个条目的最高数字,B3)。我已经相应地更新了 sheet。

=ARRAYFORMULA(IF(ISBLANK($A3:$A999);;$B:$B9&":"&MAX((Data!$B3:$B999=$B:$B9)*Data!$C3:$C999)&":"&MAX((Data!$B3:$B999=$B:$B9)*Data!$D3:$D999)))

您的问题是您的两个选项卡大小不同并且您有开放范围。
您的 Calc 选项卡是 1002 行,而 Data 是 2001 行。

您有 2 个选择

解决方案 1
Data 选项卡中再添加 一行,或者从 Calc 选项卡中删除一行。

解决方案 2
使用封闭范围,如

=ARRAYFORMULA(IF(ISBLANK($A3:$A888);;$B3:$B888&":"&MAX((Data!$B3:$B888=$B3:$B888)*Data!$C3:$C888)&":"&MAX((Data!$B3:$B888=$B3:$B888)*Data!$D3:$D888)))

无论哪种情况,确保您的范围具有相同的行数

我还没有找到自动填充它的方法,但这个解决方案对我有用,因为我可以通过将 IF 语句与 ISBLANK() 公式结合起来将它复制到很多单元格中。

基本上我用过这个,包裹在几个 if 语句中,根据我的需要更改返回的数据,然后从那里构建代码。它 returns 具有最高 B 值和 A 值的人的所需单元格值与 CALC sheet.

上的对应
INDEX(          
    Data!$C:$C
    ;
    MATCH(
        MAXIFS(
            Data!$C:$C0
            ;
            Data!$B:$B0
            ;
            $B3
        )
        ;
        Data!$C:$C
        ;
        0
    )
)

示例中M列的代码-sheet是我开始使用的代码。它(一点也不)不漂亮,可能会更有效率,但它确实有效,而且这已经需要大量的谷歌搜索、尝试和耐心,所以我有点接近 google-公式的极限知识,哈哈。

这是我在此 sheet 中为条件格式实施的公式,如果有人需要类似的东西。它根据另一个条件选择列的最大值:

=$E3=MAXIFS($E:$E0;$M:$M0;"Yes")