使用IF,AND和OR语句不重复Excel中的代码

Bry*_*hor 1 python excel vba

我试图找出在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")
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,有很多东西是重复的,没有必要.这使得阅读变得困难,并且很难打字.特别是因为我必须对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("...")
Run Code Online (Sandbox Code Playgroud)

现在可以肯定的是,这段代码仍然不是很好,似乎会有更好,更短的更有效的方法来编写它.但它得到了重点.(如果有一种方法可以在python中创建它并从python代码更改excel单元格,那就太酷了).有人有想法吗?

Axe*_*ter 5

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

例:

在此输入图像描述

公式在B5:

=INDEX($F$3:$H$5,MATCH(B4,$E$3:$E$5,0),MATCH(C4,$F$2:$H$2,0))
Run Code Online (Sandbox Code Playgroud)

辅助表可以位于可以隐藏的单独工作表上.所以它不可见.