Excel 中的字母数字排序

bec*_*cca 12 sorting microsoft-excel

在 Excel 中,是否可以从 a-1、a-2、a-3...a-123 而不是 a-1、a-10、a-100、a-11 对字母数字进行排序?

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

我被困住了。

Dav*_*egg 5

结果

\n\n

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

\n\n

步骤1

\n\n

[更新]

\n\n

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

\n\n

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

\n\n

请注意,文本框中需要一个连字符 ( - ) Other:。执行此操作之前,请确保相邻列(右侧)为空,以免覆盖重要数据。

\n\n

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

\n\n
=RIGHT(A2,LEN(A2)-SEARCH("-",A2))\n
Run Code Online (Sandbox Code Playgroud)\n\n

第2步

\n\n

现在,正如您从上面的屏幕截图中可以看出的那样,我们下一步要做的是将零附加到每个位数少于最大数字的数字的开头。这将允许您按照您想要的方式对这些数字进行排序。

\n\n

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

\n\n

[更新]您可以使用以下函数(尽管到目前为止我们不太 知道为什么)来确定最长的数字:

\n\n
=MAX(INDEX(LEN(C2:C14),,1))\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者,您可以简单地在单元格中键入以下公式(您可以在上图中看到,单元格突出显示为橙色),而不是简单地按按键ENTER来设置单元格,而是按热键CTRL-SHIFT-ENTER。这将改变函数的性质,将其变成数组公式,而不必摆弄诸如 之类的函数INDEX()

\n\n
=MAX(LEN(C2:C14))\n
Run Code Online (Sandbox Code Playgroud)\n\n

(确保该范围对于您正在使用的特定电子表格来说是准确的。)

\n\n

点击后CTRL-SHIFT-ENTER,单元格的内容将更改为以下内容,但手动输入将不会执行任何操作:

\n\n
{=MAX(LEN(C2:C14))}\n
Run Code Online (Sandbox Code Playgroud)\n\n

不过你想做就可以了。只需确定列表中最大数字由多少位数字组成:“1”当然有 1 位数字,“10”有 2 位数字,“100”有 3 位数字,依此类推。

\n\n

步骤3

\n\n

最后,在“展开”列中,此函数会将“数字”列中的数字转换为文本,其中包含您在步骤 2 中确定应使用的前置零的数量。

\n\n
=TEXT(C2,"000")\n
Run Code Online (Sandbox Code Playgroud)\n\n

确保在零两边加上引号。

\n\n

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

\n\n
=TEXT(C2,"00000000")\n
Run Code Online (Sandbox Code Playgroud)\n


fix*_*234 2

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

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

如果可以有其他前缀,例如 b-、c- 等,则类似地将文本部分拆分到另一列。然后将文本列作为第一个排序列进行排序,将数字列作为第二个排序列。

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

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