Excel表格按照字符后面的数值排序
来源:网络收集 点击: 时间:2024-05-28打开Excel表格,点击【开发工具】、【Visual Basic】调出VBE编辑器。

点击【插入】、【模块】。

在模块代码框里边输入以下VBA程序代码。
Sub NumberPaixu()
Dim i1, i2, i3, str1
On Error Resume Next
Application.ScreenUpdating = False 关闭屏幕显示更新
Set mysheet3 = ThisWorkbook.Worksheets(Sheet3) 定义工作表Sheet3
For i1 = 2 To 1000 从第2行到1000行
Set MyCell = mysheet3.Cells(i1, 1) 定义单元格
If MyCell Then 如果单元格不是空白,则
For i2 = 1 To Len(MyCell) 对单元格里边的每一个字符进行截取、判断
str1 = Mid(MyCell, i2, 1)
If IsNumeric(str1) = True Then 如果截取的字符是数字,则
i3 = i3 + 1
mysheet3.Cells(i1, 2) = Left(MyCell, i2 - 1) 写入B列单元格
mysheet3.Cells(i1, 3) = Right(MyCell, Len(MyCell) - i2 + 1) 写入C列单元格
Exit For 退出For循环
End If
Next
End If
Next
mysheet3.Sort.SortFields.Clear 清除总政高级筛选里边的条件
mysheet3.Sort.SortFields.Add Key:=Range(C2:C1000), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With mysheet3.Sort 筛选
.SetRange Range(A2:C1000)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
For i1 = 1 To i3
mysheet3.Cells(i1 + 1, 1) = mysheet3.Cells(i1 + 1, 2) mysheet3.Cells(i1 + 1, 3)
Next
mysheet3.Columns(B:C).Delete 删除B、C列
Application.ScreenUpdating = True 恢复屏幕更新显示泛陵
End Sub

确认无误后(主要是B、C两列里边没有数据),在VBE编辑器的功能区里边点击“运行”图标运行程序。

回到Excel工作表界面,将会看到A列数据的排耻茄孝序结果。

VBA程序思路解读:
1、采用通常的方法排序,其只会按照字母顺序排序,因此,可以将单元格里面的字符和数字分开,再对数值按照升序排序,最后把它们撮合。
2、程序里边关闭屏幕显示更新可以提高运行速度。
3、筛选时需要先清除筛选条件,再筛选,以免多次筛选时高级筛选里边的筛选条件过多。
4、由于借助的是B、C两列作为辅助列,因此,需要确保这两列上面没有数据,以免造成B、C两列的数据丢失。

数据无价,操作前先做好备份,以免丢失而无法找回。
操作界面及功能可能因操作系统、软件版本不同而存在差异。
EXCELVBA排序版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_851354.html