在Excel中,是否可以从a-1,a-2,a-3 ... a-123而不是a-1,a-10,a-100,a-11中分类字母数字?
从最旧到最新或通过A-Z排序,绝对不会给我我想要的结果。我已经尝试将单元格格式化为数字,但它没有帮助。
我被卡住了。
在Excel中,是否可以从a-1,a-2,a-3 ... a-123而不是a-1,a-10,a-100,a-11中分类字母数字?
从最旧到最新或通过A-Z排序,绝对不会给我我想要的结果。我已经尝试将单元格格式化为数字,但它没有帮助。
我被卡住了。
Answers:
用户@ fixer1234是对的,您可能想要使用 字符串函数。 这是一种方法。
[更新]
在“数字”列中,突出显示范围,然后在连字符处拆分文本:执行...
Data
> Text to Columns
> Delimited
> Next
> Other: -
> Finish
注意你需要一个连字符( - ) 在里面 Other:
文本框。在执行此操作之前,请确保相邻列(右侧)为空,这样您就不会覆盖重要数据。
您也可以使用此函数从列A中提取数字:
=RIGHT(A2,LEN(A2)-SEARCH("-",A2))
现在,我们将在下一步中做的事情,正如您从上面的屏幕截图所看到的那样,在每个数字的开头添加零。 数字少于最大数字。 这将允许您按照您希望的方式对这些数字进行排序。
但首先,我们需要做一些事实调查。如果您可以轻松判断最大数字是多少,那么只需计算最大数字中的数字 - 这将是您希望在下一个函数中使用的零数。还有另一种方法可以确定最长的数字,而无需手动计算最大数字的数字。
[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位数,依此类推。
最后,在“展开”列中,此函数会将“数字”列中的数字转换为您确定应在步骤2中使用的前一个零的数字。
=TEXT(C2,"000")
确保在零周围加上引号。
如果最大数字有8位数,那么你的函数将如下所示:
=TEXT(C2,"00000000")
一个简单的解决方案是使用字符串函数将数值作为数字放入新列中。然后对该列进行排序。您没有指定值的变化方式或排列方式,但示例如下:
假设“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函数将该结果转换为数字而不是数字字符串。