根据 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
在 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")
在 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")