我有一个庞大的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)))))))))))))))
答案 0 :(得分:1)
这应该对您有用:
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Bean
public LocalValidatorFactoryBean getValidator() {
LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
bean.setValidationMessageSource(messageSource());
return bean;
}
或者,您可以通过放置几个查找表来使其更具模块化。这样,将来如果需要添加任何其他条件,修改起来会容易得多。查找表可以存储在任何地方,我只是使用以下列作为示例:
现在您的公式变为(无论将查找表放在何处,都需要调整vlookup列):
=INDEX({42000,46000,52000},MATCH(E2,"R"&{1,2,3},0))*CHOOSE(F2,1,1.1,1.15,1.2,1.3)
如果愿意,您也可以将其包装在IFERROR中。