使用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 VariantDim 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窗口
如需源文件,私信或给我接收邮箱,发给你。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)