如何在Excel 2010 32位中突破限制添加自定义排序序列
解决Excel 2010自定义序列255字符限制的方法
针对Office 2010 32位版本中自定义序列总字符数不能超过255的限制,可以用以下几种方法实现自定义排序:
方法一:辅助列+VLOOKUP映射排序
- 在工作表空白区域(比如Sheet2的A列)输入完整的自定义序列条目,每个条目占一行;在相邻的B列输入对应的排序权重(1、2、3……依次递增)
- 在需要排序的数据旁插入辅助列,输入公式
=VLOOKUP(需要排序的单元格, Sheet2!A:B, 2, FALSE),下拉填充获取所有数据对应的权重值 - 选中需要排序的整个数据区域,以辅助列为关键字进行升序排序,即可实现按自定义序列排列的效果
方法二:拆分自定义序列为多个短序列组合排序
- 将原长自定义序列拆分成多个总字符数不超过255的短序列,分别添加为自定义序列
- 排序时,依次选择这些短序列作为排序关键字,按顺序设置排序优先级,最终实现近似的自定义排序逻辑
方法三:使用VBA宏突破限制
直接通过VBA代码定义完整的自定义序列并执行排序,不受255字符限制:
- 按下
Alt+F11打开VBA编辑器 - 右键点击当前工作簿,选择「插入」→「模块」
- 粘贴以下代码,替换
customList中的条目为你的实际自定义序列:
Sub CustomSortWithLongList() Dim customList As Variant ' 替换为你的完整自定义序列,每个条目用双引号包裹,逗号分隔 customList = Array("北京", "上海", "广州", "深圳", "成都", "杭州", "武汉", "重庆") ' 添加自定义序列 Application.AddCustomList ListArray:=customList ' 对目标区域排序,示例为A1:D20,按第一列排序,Header:=xlYes表示有表头 Range("A1:D20").Sort Key1:=Range("A1"), Order1:=xlAscending, _ Header:=xlYes, OrderCustom:=Application.CustomListCount ' 可选:排序完成后删除临时添加的自定义序列 ' Application.DeleteCustomList Application.CustomListCount End Sub
- 按下
F5运行宏,即可完成按完整自定义序列的排序
内容的提问来源于stack exchange,提问作者jhonnymez
相关产品推荐
相关产品推荐

