Skip to main content
 首页 » 编程设计

python之在 Excel 中使用 IF、AND 和 OR 语句不重复代码

2025年05月04日11rubylouvre

我正在尝试找出在 Excel 中使用 IF 语句的最有效方法。我知道我希望我的代码看起来像 Python,但我在 excel 中苦苦挣扎。

这是我在 excel 中的代码,它可以正常工作并执行我想要的操作:

=IFS((AND(B4="Fall", C4="Triple")), 2190, (AND(B4="Fall", C4="Double")), 2731, (AND(B4="Fall", C4="Single")), 3175, 
 AND(B4="Winter", C4="Triple"), 1902,  AND(B4="Winter", C4="Double"), 2372,  AND(B4="Winter", C4="Single"), 2757, 
  AND(B4="Spring", C4="Triple"), 1671, AND(B4="Spring", C4="Double"), 2084, AND(B4="Spring", C4="Single"), 2423, 
 ISBLANK(B4), "Pick A quarter", ISBLANK(C4), "Pick A dorm style") 

如您所见,有很多重复的东西是不必要的。它使阅读变得困难,打字也很费力。尤其是因为我必须对 AND() 语句和结果中的第二个参数做一些基本相同的事情,只需稍作改动。

这是我希望代码等效于的内容。

B4 = "Fall" 
C4 = "Double" 
 
if (B4=="Fall"): 
    if (C4 == "Triple"): 
        print(2190) 
    if (C4 == "Double"): 
        print(2731) 
    if (C4 == "Single"): 
        print(3175) 
elif (B4 == "Winter"): 
    if (C4 == "Triple"): 
        print(1902) 
    if (C4 == "Double"): 
        print(2372) 
    if (C4 == "Single"): 
        print(2757) 
elif (B4 == "Spring"): 
    if (C4 == "Triple"): 
        print(1671) 
    if (C4 == "Double"): 
        print(2084) 
    if (C4 == "Single"): 
        print(2423) 
else: 
    print("...") 

诚然,这段代码仍然不够好,似乎会有更好、更短、更高效的方法来写出这段代码。但它明白了这一点。 (如果有一种方法可以在 python 中创建它并从 python 代码更改 excel 单元格,那会很酷)。有人有什么想法吗?

请您参考如下方法:

最常见的 Excel 解决方案是使用辅助表并使用 INDEX - MATCH。

例子:

B5中的公式:

=INDEX($F$3:$H$5,MATCH(B4,$E$3:$E$5,0),MATCH(C4,$F$2:$H$2,0)) 

辅助表可以在单独的工作表上,可以隐藏。所以它是不可见的。