【问题标题】:Alphanumeric sorting according to ascending numerical value?根据升序数值的字母数字排序?
【发布时间】:2014-06-16 20:48:13
【问题描述】:

我想知道是否有一种方法,无论是在 VBA 还是 Excel 中,都可以按数值递增的顺序对字母数字字符列表进行排序?

例如:

给定数字列表:

  • 40T1000
  • 40T989
  • 40T421
  • 40T654
  • 40T532

如何对它们进行排序以阅读:

  • 40T421
  • 40T532
  • 40T654
  • 40T989
  • 40T1000

【问题讨论】:

  • 字符串有一致性吗? XXZXXXX?它总是以“40T”开头还是3个字符,或者一个字母,或者......
  • 字符串始终采用 40T------ 形式('-----' 表示不同数量的尾随值)。
  • 有志者事竟成。你考虑过尝试一下吗?
  • 我考虑构建一些可以去除前缀然后根据值对剩余字符进行排序的东西,但我或多或少想知道是否有内置功能。 (我有大约 3 天的 VBA 经验)

标签: excel vba sorting alphanumeric


【解决方案1】:

B1A、 列中输入您的数据:

=--MID(A1,4,9999)

然后抄下来。

然后按 B

对列 A & B 进行排序

【讨论】:

  • 我建议的一个改进:使公式 =value(MID(A1,4,9999))。它在排序时删除了“排序类似数字提示的任何内容”,并清楚地突出显示任何可能具有无效值的内容(如尾随字符)
【解决方案2】:

您可以只提取另一列中的最后一个数字部分,然后根据该列中的值对整个范围进行排序。

例如,如果您的数据列在 A 列中,则您可以在 B 列中使用此公式提取字符串值的最后一部分。也就是“T”右边的部分,不管“T”前面有多少个字符:

=MID(A1,FIND("T",A1)+1;LEN(A1)-FIND("T",A1))

【讨论】:

    猜你喜欢
    • 2020-09-26
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    相关资源
    最近更新 更多