我正在尝试找出在 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))
辅助表可以在单独的工作表上,可以隐藏。所以它是不可见的。
