首页 > 解决方案 > 有没有办法截断这个庞大的 IF/AND 语句?

问题描述

我有一个庞大的 IF 语句,它乘以 5 的数组,(1, 1.1, 1.15, 1.2, 1.3)并且我根据两列中的值分配它相乘的数字。将乘以该乘数数组的 3 个数字是42,000 46,000 52,000

有什么办法可以缩短这个吗?

=IF(AND(E2="R1",F2=1),42000,IF(AND(E2="R1",F2=2),42000*1.1,IF(AND(E2="R1",F2=3),42000*1.15,IF(AND(E2="R1",F2=4),42000*1.2,IF(AND(E2="R1",F2=5),42000*1.3,IF(AND(E2="R2",F2=1),46000,IF(AND(E2="R2",F2=2),46000*1.1,IF(AND(E2="R2",F2=3),46000*1.15,IF(AND(E2="R2",F2=4),46000*1.2,IF(AND(E2="R2",F2=5),46000*1.3,IF(AND(E2="R3",F2=1),52000,IF(AND(E2="R3",F2=2),52000*1.1,IF(AND(E2="R3",F2=3),52000*1.15,IF(AND(E2="R3",F2=4),52000*1.2,IF(AND(E2="R3",F2=5),52000*1.3)))))))))))))))

标签: excel

解决方案


这应该适合你:

=INDEX({42000,46000,52000},MATCH(E2,"R"&{1,2,3},0))*CHOOSE(F2,1,1.1,1.15,1.2,1.3)

或者,您可以通过放入几个查找表来使其更加模块化。这样,如果您需要添加任何其他条件,将来修改起来会容易得多。查找表可以存储在任何地方,我只是以这些列为例:

在此处输入图像描述

现在您的公式变为(根据需要调整查找表的任何位置的 vlookup 列):

=VLOOKUP(E2,$K:$L,2,FALSE)*VLOOKUP(F2,$N:$O,2,FALSE)

如果愿意,您也可以将其包装在 IFERROR 中。


推荐阅读