日常办公Office相关函数应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
日常办公的EXCEL函数应用
一、身份证号分男女(报邮政开户):
=IF(MOD(RIGHT(LEFT(D4,17)),2),"男","女")
或=IF(MOD(MID(D4,IF(LEN(D4)=15,15,17),1),2),"男","女")
二、取姓名第一个字母(报邮政开户):
打开Excel->工具->宏->Viaual Basic编辑器
在弹出来的窗口中对着VBAproject点右键->插入->模块
下面会出现一个名为"模块1",点击
在右边的空白栏中粘贴以下内容:
Function getpychar(char)
tmp = 65536 + Asc(char)
If (tmp >= 45217 And tmp <= 45252) Then
getpychar = "A"
ElseIf (tmp >= 45253 And tmp <= 45760) Then
getpychar = "B"
ElseIf (tmp >= 45761 And tmp <= 46317) Then
getpychar = "C"
ElseIf (tmp >= 46318 And tmp <= 46825) Then
getpychar = "D"
ElseIf (tmp >= 46826 And tmp <= 47009) Then
getpychar = "E"
ElseIf (tmp >= 47010 And tmp <= 47296) Then
getpychar = "F"
ElseIf (tmp >= 47297 And tmp <= 47613) Then
getpychar = "G"
ElseIf (tmp >= 47614 And tmp <= 48118) Then
getpychar = "H"
ElseIf (tmp >= 48119 And tmp <= 49061) Then
getpychar = "J"
ElseIf (tmp >= 49062 And tmp <= 49323) Then
getpychar = "K"
ElseIf (tmp >= 49324 And tmp <= 49895) Then
getpychar = "L"
ElseIf (tmp >= 49896 And tmp <= 50370) Then
getpychar = "M"
ElseIf (tmp >= 50371 And tmp <= 50613) Then
getpychar = "N"
ElseIf (tmp >= 50614 And tmp <= 50621) Then
getpychar = "O"
ElseIf (tmp >= 50622 And tmp <= 50905) Then
getpychar = "P"
ElseIf (tmp >= 50906 And tmp <= 51386) Then
getpychar = "Q"
ElseIf (tmp >= 51387 And tmp <= 51445) Then
getpychar = "R"
ElseIf (tmp >= 51446 And tmp <= 52217) Then
getpychar = "S"
ElseIf (tmp >= 52218 And tmp <= 52697) Then
getpychar = "T"
ElseIf (tmp >= 52698 And tmp <= 52979) Then
getpychar = "W"
ElseIf (tmp >= 52980 And tmp <= 53640) Then
getpychar = "X"
ElseIf (tmp >= 53689 And tmp <= 54480) Then
getpychar = "Y"
ElseIf (tmp >= 54481 And tmp <= 62289) Then
getpychar = "Z"
Else '如果不是中文,则不处理
getpychar = char
End If
End Function
Function getpy(str)
For i = 1 To Len(str)
getpy = getpy & getpychar(Mid(str, i, 1))
Next i
End Function
********复制到此结束,本行不复制*******
现在转换函数已编写完成!关掉此编缉的窗口。
要在Excel中使用,方法如下:
H4=getpy(B4)
三、两组数据合并(用于筛选赋帐户,或筛选已开户人员)
=vlookup(A2,另一个表名称!$B$2:$C$5000,4,false)
A2表示当前表格中要比对的单元格(如:身份证号所在单元号);B2表示另一个表要比对的单元格(数据跟前一个表一样);4表示要从另一个表中自B2开始数的第4栏(E栏),也就是需要从另一个返回到当前表格的数据;false是指精确比对;$表示绝对引用。
四、去掉单元单中的空格(用于删除邮政返回数据中空格)
=trim(A1)
五、检查数据是否重复(用于姓名等,用于身份证不准)
假设表1的名称是"表1",名字数据在A2-A100;表2的名称是"表2",名字数据在
A2-A200,
在表1的B1输入:重名检查,B2输入:
=COUNTIF(表2!A$1:A$200,A2)
然后往下复制或填充到B100->选中B列->工具栏->数据->筛选->自动筛选->自定义->选择"大于或等于"->1->确定.
这样筛选出来的数据是表1与表2中重复的.
如果检查表1本身有无重复:
=COUNTIF(C$2:C$8000,C3)
然后往下复制或填充到B100->选中B列->工具栏->数据->筛选->自动筛选->自定义->选择"大于或等于"->2->确定.
这样筛选出来的数据是表1本身重复的.
六、检查相同身份证号码(检查同一个表内数据)
=IF((C2=C3),1,0)
1.把身份证号这列(暂定为C列,C2开始为第一个记录)进行排序,升降不论。
目的是让相同的号码能放在一起。
2.插入D列,作为判断列。
3.在D2处输入如下公式后,双击D2单元格填充柄,公式全部自动往下复制了。
公式是:
=IF((G2=G3),1,0)
公式的意思是如果上边单元值与下边单元格的值相等时,判断值为1,不等时为0.
七、检查重复(检查同一张表内是否重复):
=IF(COUNTIF(B:B,B7&"*")>1,"重复","唯一")
八、检查帐号是否正确:
=IF(LEN(E1788)=18,IF(MOD(MID(E1788,1,1),6),"错误帐号",""),"不是18位") 如果帐号不是18位,刚返回“不是18位”;如果帐号数位正确,刚检查第一位数是不是我们麻江邮政开户的帐号(以6开头的);如果数位和帐号首个字母符合,刚不作任何提示。
分解小函数:
1、检查帐号首个数字(防止帐号录成身份证号):
=IF(MOD(MID(E2,1,1),6),"错","")
2、数字符数(帐号或身份证号):
=IF(LEN(D4)=18,"对","错")
九、从身份证号中提取出生时间(对15、18位证号均可):
=TEXT(IF(LEN(G2)=15,("19")&MID(G2,7,6),MID(G2,7,8)),"0000-00-00") 或:
=IF(LEN(G2)=15,TEXT(MID(G2,7,6),("19")&"00-00-00"), TEXT(MID(G2,7,8),"0000-00-00 "))
如果要同时检查身份证位数是否证确,如不正确则返回“数位不对”:
=IF(LEN(G2)=15,TEXT(MID(G2,7,6),("19")&"00-00-00"),IF(LEN(G2)=18,TEXT(MID(G2,7,8),"0000-00-00 "),"数位不对"))
分解小函数:
1、数字符个数 =LEN(G2)
2、自第N个字符起取M个字符 =MID(G2,N,M)
十、合并数据(姓名和出生时间合并):
=CONCATENATE(D2,F2)
十一、取整(防止因四舍五入后计算错误)
=ROUND(A1,0)
十二、如何从身份证号码中提取出生年月日、性别及年龄?
假设身份证号码在A1,在B1输入公式:
出生日期:
=TEXT((LEN(A1)=15)*19&MID(A1,7,6+(LEN(A1)=18)*2),"#-00-00")
性别:
=IF(MOD(MID(A1,15,3),2),"男","女")
年龄:
=DATEDIF(TEXT(MID(A1,7,LEN(A1)*2/3-4),"0-00-00"),TODAY(),"Y")
十二、如何从身份证号码中提取出生年月日、性别及年龄?
要从一个身份证号码里正确提取信息,首先要了解身份证号码的构成。
一个有效的身份证号码是由四部分构成的:
地址码:(身份证前六位)表示编码对象常住户口所在县(市、旗、区)的行政区划代码。
生日期码:(18位身份证的第七位到第十四位,15位身份证的第七位到第十二位)表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。
例如:1981年05月11日就用19810511表示。
顺序码:(18位身份证的第十五位到十七位,15 位身份证的第十三位到第十五位)为同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。
其中第十七位奇数分给男性,偶数分给女性。
校验码:(18位身份证的最后一位,15位身份证没有校验码)是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
校验码的生成计算较为复杂,这里暂不考虑。
1、根据身份证号码求出生年月:
=IF(LEN(A1)=18,TEXT(MID(A1,7,INT((LEN(A1)-2)/2)),"0000年00月00日"),TEXT(MID(A1,7,INT((LEN(A1)-2)/2)),"1900年00月00日"))
2、根据身份证号码求年龄:
=DATEDIF(IF(LEN(A1)=18,TEXT(MID(A1,7,INT((LEN(A1)-2)/2)),"0000-00-00"),TEXT(M ID(A1,7,INT((LEN(A1)-2)/2)),"1900-00-00")),TODAY(),"y")
3、根据身份证号码求性别:
=IF(LEN(A1)=15,IF(MOD(MID(A1,15,1),2)=0,"女","男"),IF(MOD(MID(A1,17,1),2)=0,"女","男"))。