ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 21666|回复: 25

使用公式对文本进行拼音排序

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-5-1 09:30 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:INDEX
本帖最后由 apirl2008 于 2013-10-9 23:25 编辑

nnoPYk8A.rar (1.51 KB, 下载次数: 707)

请教如何对a列文本排序的函数公式,具体见附件

TM截图20131009231434.png

 

 

------------------------------------------------

具体公式请参考:

5楼  http://club.excelhome.net/forum.php?mod=redirect&goto=findpost&ptid=318586&pid=2052960     index+code方法,缺点,仅对第一字符进行排序

8楼  http://club.excelhome.net/forum.php?mod=redirect&goto=findpost&ptid=318586&pid=2052987     index+countif方法,利用countif的文本比较大小,从而得到一组内存序列

 

TA的精华主题

TA的得分主题

发表于 2008-5-1 10:04 | 显示全部楼层

用函数排汉字,可能没法,系统排序+宏:点按钮即可

TA的精华主题

TA的得分主题

发表于 2008-5-1 11:28 | 显示全部楼层
排序的规律如何?按拼音字头?

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-1 16:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

按照拼音字头就可以!!!!!

TA的精华主题

TA的得分主题

发表于 2008-5-1 16:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

B2输入数组公式:=INDEX($A$1:$A$8,RIGHT(SMALL(CODE(LEFT($A$1:$A$8))*1000+ROW($A$1:$A$8),ROW(1:1)),3))

按Ctrl+Shift+Enter结束。

下拉

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-1 16:42 | 显示全部楼层

好使,谢谢samsoncsr,

能给解释一下公式具体的意思吗,求教啦!!!!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-1 16:52 | 显示全部楼层

附件更新啦

另外请教一下,数据区域如果是a72:a104怎么就出问题啦,请教啦!!! lVK81VFd.rar (3.06 KB, 下载次数: 227)
我重新更新了附件!!,惭愧,请老师费心啦!!!!!
[此贴子已经被作者于2008-5-1 17:05:05编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-1 17:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
czzqb老大的公式换了位置依然好使,能解释一下吗,请教啦

TA的精华主题

TA的得分主题

发表于 2008-5-1 17:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用新疆石油人在2008-5-1 16:52:26的发言:
另外请教一下,数据区域如果是a72:a104怎么就出问题啦,请教啦!!!
我重新更新了附件!!,惭愧,请老师费心啦!!!!!

那公式变更为:=INDEX($A:$A,RIGHT(SMALL(CODE(LEFT($A$72:$A$102))*1000+ROW($A$72:$A$102),ROW(1:1)),3))

原理是这样的:

利用LEFT函数截取每单元格头一个字符,再利用CODE把字头转换为数字代码(EXCEL的中文数字代码是按照拼音排序的),把数字代码×1000加上所对应的行号(简称合成,如果有学过电子学,这个合成过程有些类似于混频)用SMALL函数排序出来,再利用RIGHT函数把合成数字切割出行号来(类似于电子学中的滤波),最后用INDEX函数把行号所对应的字符引用出来。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-1 17:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

谢谢,学习啦,我得慢慢体会,这个论坛真太好拉,大家都这么热心,再次谢谢各位!!

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-21 23:00 , Processed in 0.051935 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表