Excel中的字母数字排序


8

在Excel中,是否可以从a-1,a-2,a-3 ... a-123而不是a-1,a-10,a-100,a-11中分类字母数字?

从最旧到最新或通过A-Z排序,绝对不会给我我想要的结果。我已经尝试将单元格格式化为数字,但它没有帮助。

我被卡住了。


嗨@beccabecca,请接受答案,因为这不仅对有类似问题的人有帮助,而且还奖励那些努力为您提供解决方案的人。干杯!
David Michael Gregg

Answers:


2

The Result

用户@ fixer1234是对的,您可能想要使用 字符串函数。 这是一种方法。

步骤1

[更新]

在“数字”列中,突出显示范围,然后在连字符处拆分文本:执行...

Data > Text to Columns > Delimited > Next > Other: - > Finish

注意你需要一个连字符( - ) 在里面 Other: 文本框。在执行此操作之前,请确保相邻列(右侧)为空,这样您就不会覆盖重要数据。

您也可以使用此函数从列A中提取数字:

=RIGHT(A2,LEN(A2)-SEARCH("-",A2))

第2步

现在,我们将在下一步中做的事情,正如您从上面的屏幕截图所看到的那样,在每个数字的开头添加零。 数字少于最大数字。 这将允许您按照您希望的方式对这些数字进行排序。

但首先,我们需要做一些事实调查。如果您可以轻松判断最大数字是多少,那么只需计算最大数字中的数字 - 这将是您希望在下一个函数中使用的零数。还有另一种方法可以确定最长的数字,而无需手动计算最大数字的数字。

[UPDATE] 您可以使用以下功能(尽管到目前为止) 我们没有 很清楚为什么 )确定最长的数字:

=MAX(INDEX(LEN(C2:C14),,1))

或者,你可以简单地在一个单元格中输入以下公式(你在上图中看到这个,因为单元格突出显示为橙色),而不是简单地点击你的 ENTER 设置单元格的键,点击热键 CTRL-SHIFT-ENTER。这将改变函数的性质,将其转化为 数组公式 ,而不必玩具有诸如此类的功能 INDEX()

=MAX(LEN(C2:C14))

(确保您使用的特定电子表格的范围准确。)

击中之后 CTRL-SHIFT-ENTER,单元格的内容将更改为此,但手动键入此内容将不执行任何操作:

{=MAX(LEN(C2:C14))}

但是你想做到这一点很好。只需确定列表中最大数字的位数:“1”当然有1位数,“10”有2位数,“100”有3位数,依此类推。

第3步

最后,在“展开”列中,此函数会将“数字”列中的数字转换为您确定应在步骤2中使用的前一个零的数字。

=TEXT(C2,"000")

确保在零周围加上引号。

如果最大数字有8位数,那么你的函数将如下所示:

=TEXT(C2,"00000000")

1

一个简单的解决方案是使用字符串函数将数值作为数字放入新列中。然后对该列进行排序。您没有指定值的变化方式或排列方式,但示例如下:

假设“a-”前缀永远不会改变,条目在第2行开始的col A中,并且col B可用。在B2中,你会输入类似:= value(mid(a2,3,len(a2)-2))然后根据需要复制公式。要排序,突出显示两列并在B上排序。

如果可以有其他前缀,比如b-,c-等,则类似地将文本部分拆分为另一列。然后将text列排序为第一个排序列,将number列排序为第二个排序列。

您突出显示的所有内容都将根据排序列进行排序。

要解释字符串函数,请从mid函数开始,该函数从字符串中提取字符串。 mid(a2,3,len(a2)-2)查看a2中的文本,以第三个字符开头(假设所有前缀都是“a-”的第一个数字),然后取出的字符数为比原始文本中的数字少两个(原始文本的长度减去“a-”字符)。然后,value函数将该结果转换为数字而不是数字字符串。


对不起,你能详细解释一下吗?什么是字符串功能?
beccabecca

那么,对于B3将是=值(中(a3,3,len(a3)-2))?我对吗?那么它会如此依此类推?对不起,我希望我不要问愚蠢的问题......
beccabecca

你说对了。在B2中创建公式后,您只需复制它,根据需要突出显示B单元格的行数并粘贴。它将自动更改单元格引用以逐行匹配。
fixer1234
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.