我有多个 IF AND 公式,它们将达到极限。最佳替代方案是什么?
例如。
IF(AND(AC9=1,AC4=(AB4+7)),1&"b",
IF(AND(AC9=2,AC4=(AB4+7)),2&"b",
IF(AND(AC9=3,AC4=(AB4+7)),3&"b",
IF(AND(AC9=4,AC4=(AB4+7)),4&"b",
IF(AND(AC9=5,AC4=(AB4+7)),5&"b",)))))
或更简单
IF(AB18=1,(100%+AB17)*($D$271*AB16),
IF(AB18=2,(100%+AB17)*($E$271*AB16),
IF(AB18=3,(100%+AB17)*($F$271*AB16),
IF(AB18=4,(100%+AB17)*($G$271*AB16),
IF(AB18=5,(100%+AB17)*($H$271*AB16),)))))
所有变量都保存在多行中,顶行编号为 1、2、3、4 等。
嵌套函数运行良好,但我能提供的选项数量有限。在这些情况下,我们可以求助于哪些特定函数?
答案1
一种方法是将其变成查找。以下是要点,其中包含一个与您的第一个问题类似的示例。
为了简单起见,我将所有内容都放在了电子表格的开头。您的 AC9 是我的 C1。您的 AC4 是我的 D1。我只是将结果放在 D1 中,等于AB4+7
(我只是编造了该结果)。
如果 AC9 是某个范围内的数字并且 AC4 等于某个值,则需要分配值。我通过将两者连接起来来处理 AND 要求。
F 列和 G 列包含一个查找表。您可以根据需要扩展该表。在这种情况下,您可以使用复制的公式来根据需要填充该表。例如,您的 F1 公式可以是:
=ROW()&$AB$4+7
将其复制到列下方将使用行号来增加目标 AC9 值,并将其连接到目标值AB4+7
。
G 列包含您想要的值。因此,您可以使用如下公式:
=ROW()&"b"
将其复制到列下将会填充结果值。
为了进行查找,我在 A1 中的公式是:
=IFERROR(VLOOKUP($C$1&$D$1,$F$1:$G$5,2,0),"")
这将通过连接电子表格中 C1 和 D1 的当前值来创建查找值,并将其与 F 列中的值进行比较,以查找完全匹配的值。如果找到匹配项,它将从 G 列中提取相关值。
如果不匹配,查找将产生错误。如果出现错误(不匹配),则用 IFERROR 包装 VLOOKUP 会分配一个空结果。
您的第二个示例甚至不需要连接,只需要一个包含要与 AB18 进行比较的数字的查找表,以及作为结果的相关计算。
答案2
fixer123 可能已经为您提供了使用表格 vlookup 的最佳解决方案。
如果你想使用类似版本的公式,但又没有查找表,那么另一种可能的方法可能是使用与你之前使用的公式非常接近的公式
=IF(AND(AC9<=5,AC4=(AB4+7)),AC9&"b")
另一个例子,你可以用类似这样的方法来实现,它决定要乘以的单元格地址
=IF(AB18<=5,(100%+AB17)*(INDIRECT(ADDRESS(271,AB18+3))*AB16))