excel 一个单元格内一组数据自动从小到大排列的问题

2024-12-17 23:50:54
推荐回答(6个)
回答1:

在B1单元格输入如下公式后下拉:
=TEXT(SMALL(--MID(A1,{1,4,7,10,13},2),1),"00")&" "&TEXT(SMALL(--MID(A1,{1,4,7,10,13},2),2),"00")&" "&TEXT(SMALL(--MID(A1,{1,4,7,10,13},2),3),"00")&" "&TEXT(SMALL(--MID(A1,{1,4,7,10,13},2),4),"00")&" "&TEXT(SMALL(--MID(A1,{1,4,7,10,13},2),5),"00")

回答2:

B1=TEXT(SUM(SMALL(--MID(A1,(ROW($1:$5)-1)*3+1,2),ROW($1:$5))*10^{8;6;4;2;0}),REPT("00 ",5))
数组公式,按Ctrl+Shift+Enter结束公式输入,向下复制公式。

回答3:

假定A为一个矩5*5矩阵,转换成B型式的矩阵,B从F1至J5
在F1内输入
=SMALL($A$1:$E$1,column()-5)
按CTRL+SHIFT+ENTER
再向右拖至J列,
在第2行,将上式公式中的1改成2
第3行改成3,依次即可

回答4:

这要使用宏自定义函数的。

回答5:

把以下代码粘贴到VBA模块中
Function mymin(rng As Range)
Dim arr, k
arr = Split(rng, " ")
For x = 0 To UBound(arr) - 1
For y = x + 1 To UBound(arr)
If arr(x) > arr(y) Then
k = arr(x)
arr(x) = arr(y)
arr(y) = k
End If
Next y
Next x
mymin = Join(arr, " ")
End Function

B1输入公式=mymin(a1)
公式下拉完成
以下代码是直接运行就得到结果
Sub test()
Dim arr, brr, x&, y&, i&, k
arr = Range("A1:A" & Range("A65536").End(xlUp).Row)
For x = 1 To UBound(arr)
brr = Split(arr(x, 1), " ")
For y = 0 To UBound(brr) - 1
For i = y + 1 To UBound(brr)
If brr(y) > brr(i) Then
k = brr(y)
brr(y) = brr(i)
brr(i) = k
End If
Next i
Next y
arr(x, 1) = Join(brr, " ")
Next x
Range("B1").Resize(UBound(arr)) = arr
End Sub

以上两种方法的代码完成,可以不限制A列的数据是5组。

回答6:

向高手学习VBA代码