这是一个带有嵌套IF语句的Excel公式:
=IF((B2="East"),4,IF((B2="West"),3,IF((B2="North"),2,IF((B2="South"),1,""))))
基本上要做到这一点:
If cell B2 = "East"
return "4"
ElseIf cell B2 = "West"
return "3"
ElseIf cell B2 = "North"
return "2"
ElseIf cell B2 = "South"
return "1"
Else
return ""
Excel公式可以用“更易读”的方式编写并转换为官方语法吗?是否有任何工具可以帮助编写Excel公式?
这可能是一个“超级用户”问题......但只有程序员可能知道答案!
答案 0 :(得分:3)
Excel Formula Formatter add-in,在Daily Dose of Excel中提到。
Excel的公式栏会忽略换行符和空格,因此您可以按Alt + Enter和空格键来设置您喜欢的公式格式。我试过了,我很快就停止了。太多空格键,特别是如果您需要编辑。
答案 1 :(得分:1)
一种选择是使用VBA创建用户定义的函数。
您需要在工作簿中添加一个新模块,然后放入一些看起来像这样的VB:
Function DirectionAsInt(Direction)
Select Case (Direction):
Case "East":
DirectionAsInt = 4
Case "West":
DirectionAsInt = 3
Case "North":
DirectionAsInt = 2
Case "South":
DirectionAsInt = 1
End Select
End Function
然后在您的单元格中,您可以放置:
=DirectionAsInt(B2)
答案 2 :(得分:1)
是否有任何工具可以帮助编写Excel 公式?
我不认为有,我害怕。
在给出的具体例子中,我倾向于做以下事情:
={"South";"North";"West";"East"}
=MATCH(CompassPoints, B2, 0)
答案 3 :(得分:1)
假设您没有查找表,则可以对数组进行索引匹配。
在索引函数中,使用所需的值创建一个数组。然后,您不添加特定行作为函数的下一个参数,而是添加了match函数。
在Match函数中,指定要查找的值(在这种情况下,我们要在B2中查找该值),然后指定要搜索的数组。然后,使用零参数告诉match语句:使用完全匹配。
只要两个数组的顺序相同,您将在与第二个数组中找到的值相同的位置从第一个数组中获取值。
=INDEX({2,1,4,3},MATCH(B2,{"North","South","East","West"},0))
答案 4 :(得分:0)
当我在使用我最喜欢的文本编辑器并进行替换之前完成此操作时。不是一个很好的解决方案,但它确实有效另外,你可以把它变成一个vb函数,它更具可读性。 doign的缺点是增加了执行时间并且必须启用宏。
对于您的示例,您可能只是在另一个工作表或某些隐藏单元格中创建查找表。