欢迎转发和点一下“在看”,文末留言互动!
置顶公众号或设为星标及时接收更新不迷路
小伙伴们好,今天要和大家分享一道文本排序的题目。朋友们一定觉得很奇怪,文本怎样来排序呢?不要着急,请看我慢慢到来。
原题目是这样的:
题目要求按照著作的章节来排序。像这种以汉字形式数字的序列,是不能在EXCEL中直接排序的,除非事先我们做好了自定义排序。
那么,面对今天这道题目,我们该如何处理呢?
01
TEXT函数解决核心问题
我们都知道,在EXCEL中TEXT函数可以将阿拉伯数字转换为汉字数字形式。那么今天第一条答案的思路就有了。
在单元格C2中输入下列公式,三键确认并向下拖曳即可。
=VLOOKUP(SMALL(MATCH($A$2:$A$16,"西游记第"&TEXT(ROW($1:$9999),"[dbnum1]")&"集",),ROW(A1)),IF({1,0},MATCH($A$2:$A$16,"西游记第"&TEXT(ROW($1:$9999),"[dbnum1]")&"集",),$A$2:$A$16),2,0)
公式有些长,下面来详细介绍一下这条公式。
TEXT(ROW($1:$9999),"[dbnum1]")
利用TEXT函数,将一组数字转换为中文数字。这里ROW($1:$9999)是一个连续的自然数序列,只要足够大就可以。
第二参数是“[dbnum1]”时,TEXT函数返回的结果是{"一";"二";"三";"四";"五";"六";"七";"八";"九";"一十"}这种形式的中文数字。
"西游记第"&TEXT(ROW($1:$9999),"[dbnum1]")&"集"
将它的首尾都添加后缀。这时我们发现,添加完后缀后它和A列中的数据在组合形式上相同了。
MATCH($A$2:$A$16,"西游记第"&TEXT(ROW($1:$9999),"[dbnum1]")&"集",)
接下来就可以利用MATCH函数来查找A列中的数据在上面这个新生成的数组中的位置信息。
SMALL(MATCH($A$2:$A$16,"西游记第"&TEXT(ROW($1:$9999),"[dbnum1]")&"集",),ROW(A1))
利用SMALL函数依次提取第1、2、3..小的位置值,作为VLOOKUP函数的第一参数。
IF({1,0},MATCH($A$2:$A$16,"西游记第"&TEXT(ROW($1:$9999),"[dbnum1]")&"集",),$A$2:$A$16)
这一部分是VLOOKUP函数的查找区域。它是一个15行2列的内存数组构成。
IF({1,0},区域1,区域2)是一个常用的技巧。它将两列单独的数据区域组合成一个数据区域。在这个新的数据区域中,第一列是MATCH函数返回的A列数据的位置信息;第二列是A列数据本身。
VLOOKUP(SMALL(MATCH($A$2:$A$16,"西游记第"&TEXT(ROW($1:$9999),"[dbnum1]")&"集",),ROW(A1)),IF({1,0},MATCH($A$2:$A$16,"西游记第"&TEXT(ROW($1:$9999),"[dbnum1]")&"集",),$A$2:$A$16),2,0)
最后,用VLOOKUP函数抓取章节目录就可以了。
02
相同思路,入手角度不同
第二种方法的总体思路也是相同的,只不过这次要从A列中的数据入手。
在单元格C2中输入下列公式,三键确认后向下拖曳即可。
=VLOOKUP(SMALL(MATCH(MID(SUBSTITUTE(A$2:A$16,"集",""),5,5),TEXT(ROW($1:$9999),"[dbnum1]"),),ROW(A1)),IF({1,0},MATCH(MID(SUBSTITUTE(A$2:A$16,"集",""),5,5),TEXT(ROW($1:$9999),"[dbnum1]"),),$A$2:$A$16),2,0)
过程相似,这里就不在赘述了。
03
万金油公式
我们还可以考虑使用万金油公式。
在单元格C2中输入下列公式,三键确认并向下拖曳即可。
=INDEX(A$2:A$16,MOD(SMALL(MATCH(MID(SUBSTITUTE(A$2:A$16,"集",""),5,5),TEXT(ROW($1:$9999),"[dbnum1]"),)*100+ROW($2:$16)-1,ROW(A1)),100))
一句话解释:
将A列中的中文序号提取出来,利用MATCH函数找到其在中文序列中的位置信息。扩大100倍后再加上对应的行号。利用SMALL函数取1、2..小值后对100求余,最后利用INDEX函数返回答案。
本期内容练习文件提取方式:
链接: https://pan.baidu.com/s/18VTGeRY6YCKDQhHEQDzJfQ?pwd=pv5p 提取码: pv5p
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”