2

这是一个带有嵌套 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 公式吗?

这可能是一个“超级用户”问题……但只有程序员可能知道答案!

4

5 回答 5

3

Rob van Gelder的 Excel 公式格式化程序插件,在Excel 的每日剂量中提到。

Excel 的公式栏会忽略换行符和空格,因此您可以使用 Alt+Enter 和空格键来设置您喜欢的公式格式。我试过了,很快就停止了。太多的空格键,特别是如果你需要编辑。

于 2009-10-12T15:37:07.467 回答
1

有什么工具可以帮助编写 Excel 公式吗?

我不认为有,我害怕。

在给出的具体示例中,我倾向于执行以下操作:

  1. 创建一个新名称,将其命名为 CompassPoints 之类的名称并将其值设置为={"South";"North";"West";"East"}
  2. 现在你的公式变成了=MATCH(CompassPoints, B2, 0)
于 2009-10-12T15:37:52.863 回答
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)
于 2009-10-12T14:58:49.900 回答
1

假设您没有查找表,您可以使用数组进行索引匹配。

在 index 函数中,您创建一个包含所需值的数组。然后,不要输入特定行作为函数的下一个参数,而是添加 match 函数。

在 Match 函数中,您指定要查找的值(在这种情况下,我们要查找 B2 中的值),然后是您要搜索的数组。然后我们使用零参数告诉 match 语句使用精确匹配。

只要两个数组的顺序相同,您就会从第一个数组中获取与第二个数组中找到的值相同位置的值。

=INDEX({2,1,4,3},MATCH(B2,{"North","South","East","West"},0))

于 2020-11-03T20:12:33.670 回答
0

当我在使用我最喜欢的文本编辑器并进行替换之前完成此操作时。不是一个很好的解决方案,但它有效。此外,您可以将其设为 vb 函数,这样更具可读性。doign 的缺点是增加了执行时间并且必须启用宏。

对于您的示例,您也可以在另一个工作表或某些隐藏单元格中创建一个查找表。

于 2009-10-12T14:26:11.917 回答