excel中怎么根据身份证号提取省份?

2024年11月22日 12:34
有3个网友回答
网友(1):

有人说我的答案与别人的是双胞胎,我不认可。官方帮助、官方设置,我没有必要也没有能力修改。我根据问题对相关内容进行汇总,并加入实例进行说明,只是为了初涉者有一个清晰的思路,不认可没关系,加上这段话,不做其他修改了。


在Excel里根据身份证号提取省份,需要首先建立包含省份代码和省份名称的两个辅助列。然后,提取身份证号表示省份的前两名代码并转换为数值型数据作为lookup或者vlookup公式函数的搜索值,并将辅助列设置为被搜索列和结果取值列。搜索值与搜索列的值相匹配时,返回搜索列同行的结果列的值。


完成以上工作需要做以下准备:


1、了解身份证号码各位的含义。

1-2位省、自治区、直辖市代码; 3-4位地级市、盟、自治州代码;
5-6位县、县级市、区代码; 7-14位出生年月日,比如19670401代表1967年4月1日;
15-17位为顺序号,其中17位(倒数第二位)男为单数,女为双数;
18位为校验码,0-9和X。作为尾号的校验码,是由把前十七位数字带入统一的公式计算出来的,计算的结果是0-10,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位。X是罗马数字的10,用X来代替10。


2、了解省份(包括直辖市、自治区)所对应的号码:

 11      北京市    ; 12      天津市    ; 13      河北省    


 14      山西省    ; 15      内蒙古自治区    ; 21      辽宁省    


 22      吉林省    ; 23      黑龙江省    ; 31      上海市    


 32      江苏省    ; 33      浙江省    ; 34      安徽省    


 35      福建省    ; 36      江西省    ; 37      山东省    


 41      河南省    ; 42      湖北省    ; 43      湖南省    


 44      广东省    ; 45      广西壮族自治区    ; 46      海南省    


 50      重庆市    ; 51      四川省    ; 52      贵州省    


 53      云南省    ; 54      西藏自治区    ; 61      陕西省    


 62      甘肃省    ; 63      青海省    ; 64      宁夏回族自治区    


 65      新疆维吾尔自治区     ; 71      台湾省    ; 81      香港特别行政区    


 91      澳门特别行政区    


3、熟悉lookup或者vlookup公式

3.1 VLookup

  • 功能:在表格数组的首列查找值,并由此返回表格数组当前行中其他列的值。

  • 公式格式:VLookup(Arg1, Arg2, Arg3, Arg4)

      Arg1:要搜索的值,可以是值或引用。如果 该值 小于被搜索区域或数组的第一列中的最小值,则 VLOOKUP 将返回错误值 #N/A。

     Arg2:两列或更多列数据。可以使用对区域或区域名称的引用。table_array 第一列中的值是由 lookup_value
搜索的值。这些值可以是文本、数字或逻辑值。不区分大小写。

如:搜索的值在B1:B23区域,搜索匹配后想取的值在F1:F23里,可以设置被搜索区域为B1:F23。

    table_array 第一列中的值必须以升序排序;否则 VLOOKUP 可能无法给出正确的值。

    Arg3:Col_index_num - table_array 中待返回的匹配值的列号。col_index_num 为 1 时,返回 table_array
第一列中的值;col_index_num 为 2 时,返回 table_array 第二列中的值,依此类推。

     如在Arg2中所举事例,Arg3应设置为5(即被搜索区域B为第1列)。

 Arg4:一个逻辑值,指定希望 VLOOKUP 查找精确的匹配值还是近似匹配值。


3.2 Lookup

  • 功能:从单行或单列区域或者从一个数组返回值。

  • 公式格式:Lookup(Arg1, Arg2, Arg3)

     Arg1:Lookup_value - LOOKUP 在第一个向量中搜索的值。Lookup_value 可以是数字、文本、逻辑值、名称或对值的引用。

    Arg2:Lookup_vector 或数组 - 在向量形式中,为只包含一行或一列的区域。lookup_vector
中的值可以是文本、数字或逻辑值。在数组形式中,为包含要与 lookup_value 进行比较的文本、数字或逻辑值的单元格区域。如:B1:B23

数组中的值必须以升序顺序放置。

       Arg3:Result_vector - 只用于向量形式。只包含一行或一列的区域。它必须与 lookup_vector 大小相同。如Arg2采用引用"B1:B23",Arg3也必须为1列23行的区域。


3.3 Lookup和VLookup使用注意事项

Arg1与Arg2的数值类型应该一致。如省份代码辅助列建立时单元格格式为默认的常规,要清楚该值的类型实质为数值型,在从身份证中提取前两位时也应转换为数值型,否则无法找到匹配的值(为避免身份证号码自动以科学记数法存储,一般采用文本格式,即设置单元格格式为文本或在输入身份证号时先输入一个英文的单引号')。


4、事例

VLOOKUP(VALUE(LEFT(A2,2)),E$1:F$34,2)

说明:VALUE(LEFT(A2,2)):是Arg1实参,为要搜索的省份代码,从A2单元格存放的身份证号码提取前2位,并转换为数值型数据。

E$1:F$34:是Arg2实参,该区域里,E$1:E$34为被搜索的区域,存放的是省份代码;F$1:F$34为返回值区域,存放省份的名称。

2:是Arg3实参,为Arg2实参所引用的第2列,即F列。


5、实例附件:身份证号码使用.xlsx


网友(2):

方法:

1、在另一工作表中(如"编码表")建立“编号——省份”对应表。

2、假定“身份证号”在A列,取“省份”公式:

=vlookup(left(a2,2),编码表!a:b,2,)  下拉填充

网友(3):

应该是你的编号对照表中的数字是数值型格式,但你提取的却是文本格式,就出错了。试试改为:
=VLOOKUP(--MID(D2,1,2),A17:B49,2,0)