提取单元格中某字符最后出现位置之前的数据

南漳世纪名都-ZFH-1

南漳长兴彩钢厂-H5H-2612

南漳东方曼哈顿-HLH-2

今天有很多这种格式的数据,需要提取最后一个“-”字符以前的数据。提取最后一个“-”字符以前的数据,最关键的是从左往右找到最后一个“-”字符的位置或者可以从右向左查找“-”出现的首个位置。

EXCEL里面FIND函数是从左向右查找,没有从右往左查找的函数。

CSDN上面    Excel公式:查找一单元格中某字符最后出现位置,为关键字可以查到不少方法。涉及VLOOKUP,MATCH等函数,还要用到数组,相对复杂。

直接用第一个方法解决问题。

提取最后一个“-”字符以前的数据,最关键的是要找到最后一个“-”字符的位置,然后用LEFT函数即可。

思路:先通过替换删除法算出原字符串中有多少个“-”,例如n个,然后将第n个“-”替换成“+”再查找“+”的位置。

例:E2单元格为  南漳世纪名都-ZFH-1

LEN(SUBSTITUTE(E2,"-","")   

//将E2单元格中“-”替换为空,返回“-”替换为空后字符长度

LEN(E2)-LEN(SUBSTITUTE(E2,"-","")

//则字符长度减N,即E2中有N个“-”符号

SUBSTITUTE(E2,"-","+",LEN(E2)-LEN(SUBSTITUTE(E2,"-",""))

//将E2中第N个“-”替换为“+”

FIND("+",SUBSTITUTE(E2,"-","+",LEN(E2)-LEN(SUBSTITUTE(E2,"-",""))))-1

//返回E2中“+”的位置

=LEFT(E2,FIND("+",SUBSTITUTE(E2,"-","+",LEN(E2)-LEN(SUBSTITUTE(E2,"-",""))))-1)

//最后用LEFT函数返回所需要的数据

你可能感兴趣的:(EXCEL,servlet,java,服务器)