些字段很有规律房间号均以1开头,都是4位数的房间号,物品名称都是在房间号之后,也就是说在最后一个数字之后,找最后一个数字的位置就可以了,有需要的朋友可以看看。

还是先上图吧,容易描述一些,见下图

收到一个问题,要提取房间号后的物品名称。

解决办法一:操作技巧

仔细观察后可以发现这些字段很有规律房间号均以1开头,都是4位数的房间号,所以如果是操作技巧的话,使用查找替换是最快捷的方式了。

步骤是:1、复制数据区域到B2:B19

2、ctrl+h,超找内容为*1???,替换为空(什么都不填写)

3、替换全部

OK,操作技巧处理这个问题就是这么快!

解决办法二:公式法

但是提问者想要公式解决这个问题,于是我把此问题作为群作业发布出去,一天时间收到了很多种不同思路的答案,现在整理一下,主要有以下思路:

1、找出最后一个数字的位置:仔细观察这个问题,物品名称都是在房间号之后,也就是说在最后一个数字之后,找最后一个数字的位置就可以了,这时match函数和lookup函数的查找要上场了:

a、=MID(A2,MATCH(1,-MID(A2,ROW($1:99),1))+1,9)

公式解释:MID(A2,ROW($1:99),1)将A2拆分成单个的字符,前面加符号,可以将mid函数返回的文本型数字,转成数值;将mid函数返回的汉字变成错误值。match函数超找1是因为-MID(A2,ROW($1:99),1)构成的数组最大值为0,所以查找值为1时,可以找到最后一个数字的位置,然后使用mid函数提取,因为目测这些物品名称最长也不超过9字符,所以mid的第三参数使用了9,缩短公式长度。

b、=MID(A2,LOOKUP(1,-MID(A2,ROW($1:98),1),ROW($2:99)),9)

公式解释:思路同上,只是使用了lookup函数,查找最后一个数字的位置,对应的数值ROW($2:99),相当于ROW($1:98)+1,缩减字符

c、=MID(A2,MATCH(,0/(MID(SUBSTITUTE(A2,”、”,1),ROW($1:99),1)+1))+1,9)

公式解释:这里思路也和上面一样使用的是match函数经典用法,match(0,0/)由于本题分母有可能为0,所以这里公式MID(SUBSTITUTE(A2,”、”,1),ROW($1:99),1)+1,避免了分母为0

2、找出第一个汉字的位置:物品名称的第一个都是汉字,汉字是双字节字符,这个题里还有顿号(、)是双字节的,所以公式是:

=MID(A2,MATCH(2,LENB(MID(SUBSTITUTE(A2,”、”,1),ROW($1:99),1)),),9)

公式解释:汉字是双字节字符,顿号(、)是双字节字符,所以这里先把顿号替换成1,变成单字节(不能为了节省字符变成0省略!因为变成0省略时,这里会把省略的0当成空,结果出错),然后拆分成单个字符,lenb函数返回1或者2,match函数精确查找2,第一个出现的位置。

感觉以上四种答案是最通用,范围最广的,都很经典,可以自己慢慢消化理解

3、除了以上的公式,还可以看这个题的规律取巧写公式,因为房间号都是4位,中间是顿号隔开,所以还有下面的公式可以得出结果:

a、=MID(A2,COUNT(FIND(“、”,A2,ROW($1:99)))+5,9)

公式解释:find函数查找顿号的位置,返回值是数值或者错误值,第三参数是起止位置,count计算出find函数得出是数值的个数,这里可以求出最后一个顿号的位置,顿号过后是4个数字的房间号,然后是物品名称的第一个字,所以物品的第一个字是在顿号后面的第5个字符。

b、=MID(TRIM(RIGHT(SUBSTITUTE(A2,”、”,REPT(” “,99)),99)),5,9)

公式解释:把顿号换成99个空格,然后从右提取99个字符,trim过滤掉多余的空格,从第5个字符开始提取。