我试图找出在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单元格,那就太酷了).有人有想法吗?
最常见的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)
辅助表可以位于可以隐藏的单独工作表上.所以它不可见.
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |