Excel里大写数字排序总是乱糟糟?教你一招让壹贰叁乖乖听话!
嘿,朋友!你是不是也遇到过这种情况:在Excel里辛辛苦苦地列了个表,项目编号是中文的,比如“第一条”、“第二条”这种,或者财务报表里那些让人眼花的“壹”、“贰”、“叁”…… 然后,你想按顺序排一下,满怀希望地选中数据,点下“排序”按钮…… 结果呢?Excel给你排出来一个“一百”、“二十”、“二”、“一”的顺序!当时我就想,Excel你是不是傻了?这么简单的数字顺序你都能搞错?!
别抓狂,我懂你的痛。这事儿,我刚开始用Excel那会儿,没少吃亏。总觉得这么智能的软件,怎么可能连数字顺序都分不清?后来慢慢琢磨明白了,其实不是Excel笨,而是它太“老实”。在你我看来,“一”、“二”、“三”是数字,但在Excel的“世界观”里,它们就是一堆普通的文字字符,就像“苹果”、“香蕉”、“橘子”一样。它在进行“排序”的时候,默认是按照文本的规则来的,比如根据汉字的Unicode编码顺序,或者拼音顺序(取决于你的系统设置),而不是按照它们背后的数值大小。所以,“一”可能因为编码靠前或者拼音是yi,就排在了前面,而“十”可能因为编码或拼音靠后,就去了后面,跟实际数值完全无关。更别提“一百”这种多位数的了,它会先看第一个字,然后看第二个字…… 结果当然是乱七八糟。
那怎么办?难道我们只能眼睁睁看着这些大写数字或中文数字乱成一锅粥吗?当然不是!方法还是有的,而且说穿了,其实原理特简单—— 给Excel一个它能理解的“数字拐杖”。 我们不能指望它直接理解汉字数字,但我们可以把这些汉字“翻译”成它能懂的、真正的阿拉伯数字(1、2、3…),然后让它去排序这个“翻译”过来的数字列。
最直接、最粗暴,但也往往最管用的办法,就是加一列“帮手”。想象一下,你在你原本的中文数字列旁边,紧挨着,新加一列。这列就是我们的“数字翻译官”。
比如你的表格是这样:
| 项目名称 | 编号 (中文) |
| ——– | ———– |
| 合同条款 | 第一条 |
| 附件列表 | 第五条 |
| 重要事项 | 第四条 |
| 补充说明 | 第二条 |
| 最终修订 | 第三条 |
你就在旁边加一列,叫“排序助手”或者别的什么名字:
| 项目名称 | 编号 (中文) | 排序助手 |
| ——– | ———– | ———— |
| 合同条款 | 第一条 | 手动输入 1
|
| 附件列表 | 第五条 | 手动输入 5
|
| 重要事项 | 第四条 | 手动输入 4
|
| 补充说明 | 第二条 | 手动输入 2
|
| 最终修订 | 第三条 | 手动输入 3
|
对着“第一条”,你在“排序助手”列里输入“1”;对着“第五条”,输入“5”,以此类推。把所有的中文数字,都一一对应地输入它们背后的阿拉伯数字。这有点像在给Excel做个体识字教学,告诉它“第一条”就是“1”。
等这一列“排序助手”填满了对应的阿拉伯数字后,关键一步来了:选中你的整个数据区域!记住,一定要包含上你刚刚辛辛苦苦填好的“排序助手”这一列。然后,点击“数据”选项卡下的“排序”。在弹出的排序对话框里,把“主要关键字”选择为你新加的“排序助手”列,排序次序选择“升序”(或者“降序”,看你的需求)。
点确定!“Duang!”一声,你会发现,原本乱七八糟的“编号 (中文)”列,瞬间就跟着旁边的“排序助手”列乖乖地按1、2、3、4、5的顺序站好了!“第一条”回到了最上面,“第五条”去了该去的地方。搞定!
这个方法是不是有点“笨”?特别是你的列表特别长,几百几千行的时候,手动输入这些数字想想就头大。但这招胜在简单直观,几乎没有门槛,适用于任何版本的Excel,而且对于数据量不大、或者中文数字不那么规则(比如“二十”、“三十五”这种,手动对应反而不容易出错)的情况,效率反而是最高的。
那有没有更“自动化”一点的办法呢?当然有!如果你处理的中文数字比较有规律,比如都是“一、二、三、四…”、“壹、贰、叁、肆…”这样简单的一位数或者连续的,你可以稍微玩点小花招。
比如,对于简单的“一、二、三…”,如果它们是挨着写的,你甚至可以利用Excel的ROW()
函数。假设你的数据是从第2行开始的(第1行是表头),那么在“排序助手”列的第2行(对应“一”那行),你可以输入 =ROW()-1
。这里的-1
是为了减去表头占的那一行,让结果从1开始。然后把这个公式往下一拉!Excel会自动填充成2、3、4… 完美对应上了!这种方法适用于那些本来就应该从1开始顺序编号的列表,快速生成排序助手列。
更通用的自动化方法,我觉得是用对照表 + VLOOKUP。这有点像给Excel建立一个自己的“汉字数字词典”。
你在你的工作簿里,随便找个空白区域(或者干脆新建一个工作表,藏起来),建一个两列的小表格:
| 中文数字 | 阿拉伯数字 |
| ———— | ————– |
| 一 | 1 |
| 二 | 2 |
| 三 | 3 |
| 四 | 4 |
| 五 | 5 |
| 六 | 6 |
| 七 | 7 |
| 八 | 8 |
| 九 | 9 |
| 十 | 10 |
| 壹 | 1 |
| 贰 | 2 |
| 叁 | 3 |
| 肆 | 4 |
| 伍 | 5 |
| 陆 | 6 |
| 柒 | 7 |
| 捌 | 8 |
| 玖 | 9 |
| 拾 | 10 |
| … | … |
这个表你建得越全,能“翻译”的中文数字就越多。然后,回到你的主数据表,还是加那个“排序助手”列。在这一列里,这次咱们不手动输入了,而是输入一个VLOOKUP
公式。
假设你的中文数字在B列,你要在C列建立“排序助手”,你的对照表建在了Sheet2工作表的A1:B20区域(包含一到十、壹到拾等)。在C列的第一个数据行(比如C2),输入公式:
=VLOOKUP(B2, Sheet2!$A$1:$B$20, 2, FALSE)
这个公式的意思是:去Sheet2工作表的$A$1到$B$20这个区域里找($A$1:$B$20
是绝对引用,防止下拉公式时区域跑偏),查找的值是什么呢?是当前行B列的那个中文数字(B2
)。找到了怎么办?把查找区域的第2列(也就是对应的阿拉伯数字)给我抓过来。最后的FALSE
是告诉Excel,要精确查找,别找个差不多的就凑合。
输入完公式,回车,你会发现C2单元格神奇地显示出了B2单元字对应的阿拉伯数字!然后呢?选中C2单元格,鼠标放到右下角,变成一个黑色小十字时,双击或者往下一拉!“唰”的一下,所有行的中文数字都自动“翻译”成了阿拉伯数字!
这个方法的好处是,一旦你的对照表和公式建好,以后再遇到类似的中文数字排序,你只需要把数据粘贴进来,排序助手列就自动生成了。效率极高,一劳永逸的感觉特别爽。当然,如果你的中文数字格式非常复杂(比如“第一百二十三条”),用VLOOKUP直接查找单个字就不行了,可能需要更高级的文本函数组合,甚至写VBA宏来处理,但这对于大多数简单的中文数字列表,VLOOKUP加对照表,绝对是又快又准的杀手锏。
所以你看,那些让Excel排序抓狂的大写数字和中文数字,并非无解。问题不在于数字本身,而在于我们如何“告诉”Excel它们真正的数值含义。无论是简单粗暴地手动建立数字列,还是利用公式自动化“翻译”,核心都是在给Excel提供一个它能理解的“数字通道”。
下次再遇到Excel里“第一条”排在“第二条”后面,“壹”排在“拾”后面的离谱情况,别再傻眼了。想想咱们说的这些“帮手”和“翻译官”,分分钟让你的中文数字们乖乖按照数值大小排好队!这感觉,比直接排序成功还要有成就感,毕竟,咱们是靠智慧“驯服”了Excel这个小家伙!
发表回复