首页 > 解决方案 > Excel 使用单元格引用作为具有多个条件的逻辑运算符并查找值

问题描述

不太清楚如何解决这个问题。希望根据 2 条规则使用正确的 CMG 代码填充突出显示的单元格(F15、F16、G15、G16)。规则可在上表 D:H 列中找到。每个规则分为 3 列,即指定的指标、运算符和值。大多数规则会检查运动得分,而有些规则会检查年龄,在某些情况下只有 1 条规则。在 CMG 填充单元格 F15 和 F16 之后,我需要使用该代码在 I:L 列中查找权重(这应该是一个相当简单的任务)。

宁愿使用公式而不是 VBA 来完成此操作。有任何想法吗?谢谢!

在此处输入图像描述

请注意,突出显示的单元格应为以下值:

这个问题与这个问题非常相似,但我有两套规则/标准。我的规则也可以在电机、年龄和(空白)之间切换。 excel使用单元格引用作为逻辑运算符并查找值

标签: excelexcel-formulalogical-operators

解决方案


使用以下公式在表格中为“Bob”获取所需的行,然后您可以为“Steve”等填写该行(然后您可以在INDEX公式中使用此结果来获取 CMG 和重量)。请注意,您必须将其作为数组公式 ( ctrl++ shift)提交enter

=MATCH("TRUETRUETRUE",($A$2:$A$12=B15)&IF(LEN($C$2:$C$12)>0,CHOOSE(MATCH($C$2:$C$12,$C$14:$D$14,0),CHOOSE(MATCH($D$2:$D$12,{">",">=","<","<="},0),$C15>$E$2:$E$12,$C15>=$E$2:$E$12,$C15<$E$2:$E$12,$C15<=$E$2:$E$12),CHOOSE(MATCH($D$2:$D$12,{">",">=","<","<="},0),$D15>$E$2:$E$12,$D15>=$E$2:$E$12,$D15<$E$2:$E$12,$D15<=$E$2:$E$12)),TRUE)&IF(LEN($F$2:$F$12)>0,CHOOSE(MATCH($F$2:$F$12,$C$14:$D$14,0),CHOOSE(MATCH($G$2:$G$12,{">",">=","<","<="},0),$C15>$H$2:$H$12,$C15>=$H$2:$H$12,$C15<$H$2:$H$12,$C15<=$H$2:$H$12),CHOOSE(MATCH($G$2:$G$12,{">",">=","<","<="},0),$D15>$H$2:$H$12,$D15>=$H$2:$H$12,$D15<$H$2:$H$12,$D15<=$H$2:$H$12)),TRUE),0)

编辑Tom Sharp 有一个很好的建议来使用 COUNTIFS,这将允许您直接使用逻辑运算符。这会产生一个更短、更直接的公式(您仍然必须将其作为数组公式提交):

=MATCH(4,IF($C$2:$C$12=$C$14,COUNTIFS(B15,A$2:A$12,C15,D$2:D$12&E$2:E$12)>0,1)+IF($F$2:$F$12=$C$14,COUNTIFS(B15,A$2:A$12,C15,G$2:G$12&H$2:H$12)>0,1)+IF($C$2:$C$12=$D$14,COUNTIFS(B15,A$2:A$12,D15,D$2:D$12&E$2:E$12)>0,1)+IF($F$2:$F$12=$D$14,COUNTIFS(B15,A$2:A$12,D15,G$2:G$12&H$2:H$12)>0,1),0)

基本上,对于每一行,您都在检查 Motor 和 Age 的每条规则,以确保所有四种情况都为真或不适用。


推荐阅读