Excel if else 公式因句法错误而失败

Excel if else formula fails due to wrong syntex

我在 excel 列中有不同的 class 字符形式的名称。我想将其转换为数字形式并添加到列 C

If B2==N, make it 1
If B2==O, make it 0
If B2==A, make it 2
If B2==~, make it 9

我写了下面的excel公式。我在图像中添加了我的公式和错误消息。你能纠正我错误的地方吗

=IF(B2='N',1,if(b2='O',0,if(b2='A',2,if(b2='~',9))))

更新

根据详细答案添加公式后

在Excel中,双引号用于括起字符值而不是单引号。因此,您的公式将变为

=IF(B2="N",1,IF(B2="O",0,IF(B2="A",2,IF(B2="~",9,""))))

此外,我在最后一个 IF 中添加了一个带空格的 else 子句。

此外,如果您使用的是较新版本的 Excel,那么您还可以使用更简单、更短的 SWITCH

=SWITCH(B2,"N",1,"O",0,"A",2,"~",9,"")

Excel公式中,双引号用于表示start 文本字符串结尾 。数字不应在双引号内。

也就是说,我们可以使用像 IF 函数这样的公式,但我们也可以通过创建一个 table 引用来避免使用 双引号 ,请参阅下图,替代解决方案 - 7 种方法

• 单元格 C2

中使用的公式
=VLOOKUP($B2,$I:$J,2,1)

没有Table的参考以上公式可以写成

=VLOOKUP($B2,{"~",9;"A",2;"N",1;"O",0},2,1)

• 单元格 D2

中使用的公式
=LOOKUP($B2,$I:$J)

没有Table的参考以上公式可以写成

=LOOKUP($B2,{"~",9;"A",2;"N",1;"O",0})

• 单元格 E2 中使用的公式 --> “更正您自己的公式”

=IF(B2="N",1,IF(B2="O",0,IF(B2="A",2,IF(B2="~",9))))

• 单元格 F2

中使用的公式
=IFS(B2="~",9,B2="A",2,B2="N",1,B2="O",0)

• 单元格 G2

中使用的公式
=SWITCH($B2,"~",9,"A",2,"N",1,"O",0)

注意单元格 F2 & G2 中使用的公式,您需要 Excel 2019 , Excel 2021 或 O365 因此最好使用 Table Of Reference 以避免使用 双引号.

所以,如果每个字符前有一个space那么公式,应该改变参考下图和公式,

• 单元格 C2

中使用的公式
=VLOOKUP(TRIM($B2),$I:$J,2,1)

• 单元格 D2

中使用的公式
=LOOKUP(TRIM($B2),$I:$J)

• 单元格 E2

中使用的公式
=IF(TRIM($B2)="N",1,IF(TRIM($B2)="O",0,IF(TRIM($B2)="A",2,IF(TRIM($B2)="~",9))))

• 单元格 F2

中使用的公式
=IFS(TRIM($B2)="~",9,TRIM($B2)="A",2,TRIM($B2)="N",1,TRIM($B2)="O",0)

• 单元格 G2

中使用的公式
=SWITCH(TRIM($B2),"~",9,"A",2,"N",1,"O",0)

如果这些不是 space 并且实际上是非 printable 字符,那么只需将 TRIM 更改为 SUBSTITUTE 函数

C2

=VLOOKUP(SUBSTITUTE($B2,CHAR(160),""),$I:$J,2,1)

D2

=LOOKUP(SUBSTITUTE($B2,CHAR(160),""),$I:$J)

E2

=IF(SUBSTITUTE($B2,CHAR(160),"")="N",1,IF(SUBSTITUTE($B2,CHAR(160),"")="O",0,IF(SUBSTITUTE($B2,CHAR(160),"")="A",2,IF(SUBSTITUTE($B2,CHAR(160),"")="~",9))))

F2

=IFS(SUBSTITUTE($B2,CHAR(160),"")="~",9,SUBSTITUTE($B2,CHAR(160),"")="A",2,SUBSTITUTE($B2,CHAR(160),"")="N",1,SUBSTITUTE($B2,CHAR(160),"")="O",0)

G2

=SWITCH(SUBSTITUTE($B2,CHAR(160),""),"~",9,"A",2,"N",1,"O",0)

我个人会使用 IFS 函数做这样的事情:

=IFS(B2="N",1,B2="O",0,B2="A",2,B2="~",9)