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

问题描述 投票:1回答:1

Link to Google Sheet Sample

在工作表“ Calc”的E列中,我想检查工作表“数据”中是否有一个人的A值相同,但在B和C上的值更高。如果没有,我最终要返回“否” ,如果是,则返回“是”。如果有一个具有相同A值的人,其B值较高,而C值较高(反之亦然),则返回“也许”并带有该人的姓名。 自动填充 E,返回值。

'Calc'中B,C和D列中的值是动态的,并且会根据其他计算而变化。 “数据”中的B,C和D值是静态的。两列的长度可以不同。

一些示例:工作表“ Calc”中的名称1的值为A89,B70,C70。工作表“数据”中的人A具有值A89,B71,C75。没有人在B或C上都具有A89和更高的值。返回“是”。

工作表“ Calc”中的名称1具有A89,B70,C70的值。工作表“数据”中的人A具有值A89,B60,C55。没有人在B或C上都具有A89和更高的值。返回“否”。

工作表“ Calc”中的名称1具有A89,B70,C70的值。工作表“数据”中的人A具有值A89,B71,C55。没有人在B或C上都具有A89和更高的值。返回“也许:人A”。

工作表“ Calc”中的名称1具有A89,B70,C70的值。工作表“数据”中的人A具有值A89,B71,C55。工作表“数据”中的人B具有A89,B55,C71的值。与“数据”表中具有A89的人员相比,人A在B上具有最高的价值,但其C值低于“计算”表中的姓名1的C。与“数据”表中具有A89的人员相比,人B在C上具有最高的值,但其B低于“计算”表中的名称1的人员。返回“也许:人A,人B”。

[我试图通过将= ARRAYFORMULA与MAX结合来获得工作表'Calc'中的最大值,但是我遇到了'不同数字'数组错误,或者只是将所有内容与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)))

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

=ARRAYFORMULA(IF(ISBLANK($A3:$A999);;$B$3:$B$999&":"&MAX((Data!$B3:$B999=$B$3:$B$999)*Data!$C3:$C999)&":"&MAX((Data!$B3:$B999=$B$3:$B$999)*Data!$D3:$D999)))
google-sheets max array-formulas auto-populate
1个回答
1
投票

您的问题是,您的两个标签的大小不同,并且您有开放的范围。您的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)))

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

© www.soinside.com 2019 - 2024. All rights reserved.