EXCEL同一个单元格的数字如何排序?

EXCEL同一个单元格的数字如何排序?,第1张

使用TEXT、SUBSTITUTE、SUMPRODUCT、ISNUMBER、FIND等函数综合处理

Excel版本参考:2010

测试数据在A1中
1、单元格中不存在重复值的排序使用如下通用公式:
=TEXT(SUBSTITUTE(SUMPRODUCT(ISNUMBER(FIND({1;2;3;4;5;6;7;8;9},A1))ROW($1:$9)10^(10-ROW($1:$9))),0,),REPT(0,LEN(A1)))
2、单元格中存在重复值的排序使用如下通用公式:

=SUM(LARGE(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),ROW(INDIRECT("1:"&LEN(A1))))10^(ROW(INDIRECT("1:"&LEN(A1)))-1))

数组公式,按下CTRL+Shift+Enter组合键来完成

excel自动排序数字可以在开始界面的右上角中选择排序进行设置。

1、打开excel表格,选中需要排序的列。

2、点击右上角排序和筛选按钮。

3、这里会有三种排序方式,选择需要的一种,点击完成。

4、表格即可按照所选进行自动排序。

扩展资料:

在使用Excel数据排序时,需要注意:

Excel默认对光标所在的连续数据区域进行排序。连续数据区域是指该区域内没有空行或空列。

需要对工作表内某一个连续的数据区域排序,则要先将光标定位到该区域内的排序依据列上,否则得出不想要的排序结果。

需要对多个连续数据区域内的所有数据排序,可以选定所要排序的数据范围,然后通过菜单栏数据->排序对话框来实现。排序后,空行会被移至选定区域的底部。

单元格内排序,详见样表截图

B1输入

=REPT(0,LEN(A1)-LEN(SUBSTITUTE(A1,0,)))&SUM(SMALL(1MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),ROW(INDIRECT("1:"&LEN(A1))))10^(LEN(A1)-ROW(INDIRECT("1:"&LEN(A1)))))

同时按下CTRL+SHIFT+Enter三键,使数组公式出现{ },公式下拉

1 排序的数据类型可以是数值,文本,日期等。简单用一个例子来说明,我们想对所有学生的成绩进行排序。

2 将鼠标定位在成绩这一列的任一一个数据单元格。

3 在菜单栏的“开始”下面的“排序和筛选”里可以选择“升序”或“降序”。

4 完成之后我们可以看到成绩会按照要求重新排列,这里我们选择的是“升序”。

5 如果要对班级进行排序,我们按照上面的方法 *** 作,会对班级按照字母A到Z的顺序排列。

6 我们还可以进行多层排序:将光标放在任一数据单元格,然后点击“排序和筛选”下面的“自定义排序”。

7 打开对话框之后我们选择第一层级的关键字是“班级”,顺序是“升序”。

8 再添加第二层级,点击“添加条件”,选择关键字“成绩”,顺序还是“升序”。

9 完成之后我们会看到首先按照班级的顺序排列,然后每个班级里按照成绩从小到大排列。

假设要对A列有数值的单元格,以升序排列

1、选中A列有数值的单元格,转到“数据”工具栏,点击排序;

见图一

2、在跳出来的"排序" 对话框中,“排序依据”选择:数值;“次序”选择:升序,再点确定。

见图二

3、实际结果

见图三

Public cc As Variant
Dim arr(), arr1(), arr2()
Sub 知道正则排序()
Set regx = CreateObject("vbscriptregexp")
With regx
Global = True
Pattern = "[\u4E00-\u9FFF]\d+\\d"              '正则匹配一个汉字+多个数字
Set mat = Execute(cc)                           '输入单元格变量
ReDim arr(1 To 1, 1 To matCount)
ReDim arr1(1 To 1, 1 To matCount)
For Each m In mat
k = k + 1
arr(1, k) = m                                      '结果转换成数组
Next m
k = 0
End With
End Sub
Sub 主体()
If ActiveCell = "" Then
MsgBox "请选择一个有内容的单元格或区域!"
GoTo Endd
End If
Strr = InputBox("请输入一个新的排序,用[]隔开:" & Chr(10) & "数量不要超过每单元内的汉字数!", "输入序列", "321")
For Each cc In Selection
次数 = 次数 + 1
行 = ccRow
列 = ccColumn
Call 知道正则排序
顺序数组 = Split(Strr, "")
For Each 序列 In 顺序数组
n = n + 1
arr1(1, n) = arr(1, 序列)                   '交换数组
Next 序列
Erase arr
n = 0
arr1 = ApplicationIndex(arr1, 1, 0)       '提取数组第一行
'ReDim Preserve arr2(1 To 1, 1 To 次数)
Cells(行, 列 + 3) = Join(arr1, "")         '输出
'arr2(1, 次数) = Join(arr1, "")            '链接输出备用
Erase arr1
Next cc
Endd:
End Sub

代码功能:

1、先选中要处理的数据(不要包含空单元格!)

2、点击执行,结果会输出到数据右侧

代码使用方法:

Alt+F11调出VBA窗口

如需源文件,私信或给我接收邮箱,发给你。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13394325.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-27
下一篇 2023-07-27

发表评论

登录后才能评论

评论列表(0条)

保存