Excel 行的升序排列

Excel 行的升序排列

我在 Excel 中有以下行:

在此处输入图片描述

我怎样才能按升序排列它们(例如,注意以 12 开头的行位于以 118 开头的行之前)。

谢谢。

答案1

对文本进行排序时,Excel 会查看可使用CODE函数获取的字符代码。 CODE(".")返回 46 而CODE("0")为 48,因此第 3 位的文本"."被视为小于"0"相同位置的字符串。

要对字符串的数字部分进行排序,您需要一个与字符串相邻的辅助列。在 B1 中输入以下公式:

=VALUE(LEFT(A1,FIND(".",A1)-1))

VALUE函数将LEFT之前找到的所有内容转换"."为数字,然后按正确的数字顺序排序,以便 12 小于 118。

答案2

对于“然后”的解决方案,可以使用函数REPLACE()来完成艰苦的工作:

=VALUE(REPLACE(A1,FIND(".",A1),LEN(A1),""))

REPLACE()这样使用比单独使用slightly更具扩展性LEFT()。例如,与使用 aLEFT()和 aRIGHT()来从两端获取位,然后将它们重新组合在一起相比,只需稍微调整一下REPLACE()插入多少个字符的位置就可以很好地完成任务。

它在 A1 中查找,在其中搜索句点字符(位于图像中重要的数字部分之后),并将其替换为非字符""。它使用FIND()进行定位,将其数值作为其自身替换的起始位置。它需要一个要使用的替换字符数的值,我们使用 来LEN()告诉它替换与原始字符相同的字符数。

因此,我们最终得到了示例所需的数字部分加上一定数量的......什么都没有......因为""没有在字符串中添加任何字符。

此时它是一个字符串,因为它REPLACE()是一个字符串函数,并且 Excel 假定您想要一个字符串作为输出。用 将其全部包装起来VALUE()会将类型更改为数字。

数字排序正确,例如“12”将排在“118”之前。

请注意,由于您只使用这些值进行排序,因此如果您不使用该VALUE()函数,则内容仍将看起来像数字,如果您能记得在排序时做出正确的选择,并且 Excel 会为您提供“排序警告”对话框,那么您可以直接使用它。当然,您必须始终记住并且永远不会忘记,但它会很好用。但是,既然添加没有任何成本VALUE(),为什么不使用它呢?

顺便说一句,没有辅助列就无法做到这一点。可以做很多事情,但最终还是要进行排序,并且需要这些值来对排序进行排序。Excel 只在排序功能本身中提供了这种选择,因此必须有实际的单元格,而不是命名范围来引用。

即使是“现代”(2021)使用该SORT()函数的能力,也SORTBY()无济于事,因为这只是按顺序生成一个不错的列表,但是……它会在某个地方生成它,这相当于使用辅助列。所以一个有六个,另一个有六个。

要进行无辅助列(某种类型的)的现场排序,您需要 VBA。这样效果会很好。但需要一个宏来“现场”执行此操作,而不是 UDF。

相关内容