如果和Mid功能需要帮助请

时间:2015-02-22 21:30:28

标签: excel if-statement excel-formula

我有一个VIN号码列表(17个字符),第10个字符是型号年份 - 可以是字母或数字。我在某处读到IF函数只接受7个级别,我有16个级别的条件:

G   2016
F   2015
E   2014
D   2013
C   2012
B   2011
A   2010
9   2009
8   2008
7   2007
6   2006
5   2005
4   2004
3   2003
2   2002
1   2001

我开始创建公式(只是几个级别,而不是整个16级),但我得到的值是FALSE

=IF(MID(A1,10,1)=1,2001,
IF(MID(A1,10,1)=2,2002,
IF(MID(A1,10,1)=3,2003,
IF(MID(A1,10,1)=4,2004,
IF(MID(A1,10,1)=5,2005,
IF(MID(A1,10,1)=6,2006,
IF(MID(A1,10,1)=7,2007
)))))))

也许不同的公式组合会更好用吗?

4 个答案:

答案 0 :(得分:0)

这是否有效:

=CInt(MID(A1,9,2)) + 2000

只要年份是2000年,它就可以工作,而且永远不是一个角色。

答案 1 :(得分:0)

这样做

=IFERROR(2000 + HEX2DEC(MID(A1,10,1)),2016)

如果您不想使用IFERROR,可以使用这个稍长的公式

=IF(MID(A1,10,1)="G",2016,2000 + HEX2DEC(MID(A1,10,1)))

顺便说一下,Excel 2007现在允许64个嵌套ifs

答案 2 :(得分:0)

我建议使用查找表,例如如果代码列在Y2:Y17Z2:Z17中的年份,则可以使用此公式

=VLOOKUP(MID(A1,10,1),Y$2:Z$17,2,0)

请注意,MID函数始终返回文本结果,因此查找表的Y2:Y17范围应为文本格式(即使是数字),因此在输入数据之前将其作为文本范围的格式或输入带有前置撇号的数字,如'4

答案 3 :(得分:0)

重写了这一点,因为最后一个没有考虑到这些字母:

= IF(ISNUMBER(VALUE(MID(A1,10,1))),MID(A1,10,1)+ 2000,CODE(UPPER(B1))+ 1945)

它的工作原理是检测第10个字符是否为数字,如果是则为其添加2000,如果是字母,则将其分解为ASCII值(A为65)并向其添加1945。注意,我使用Upper作为小写字母a是97,这会导致结果错误。如果您保证您的vin号码都是大写的,那么您可以省略上面的条款