发布网友 发布时间:2022-04-25 14:46
共6个回答
热心网友 时间:2022-04-29 09:21
有一个简单的办法不知道是否满足,就是复制A列到B列,然后B列选择降序排列在弹出的对话框中选择【以当前选定区域排序】即可实现。
追问要自动,不用我去用手拉追答思路:复制A到B列,然后利用系统排序自动排。
前面在想用Function来做,一直在试验看看能否解决。发现不可避免的自调用很容易死循环。最后只能用SUB来做,代码倒不复杂,如下:
Sub 排序0()
Range("A:A").Select
Selection.Copy
Range("B1").Select
ActiveSheet.Paste
Range("B:B").Sort key1:=Range("B1"), order1:=xlDescending, Header:=xlNo
End Sub
热心网友 时间:2022-04-29 10:39
2021版,在B1中输入或复制粘贴下列公式
=LARGE(ABS(A$1:A$3),ROW(A1:A3))*IF(A$1:A$3<0,-1,1)
回车即可
追问要按绝对值的大小从大至小排列,换一组数字就不行了。
热心网友 时间:2022-04-29 12:14
设定这一组数据在A列,先对A列的数据设置正负号的自定义格式,再B列输入公式并向下填充:=ABS(A2)追答那就VBA编程处理
热心网友 时间:2022-04-29 14:05
假设数据在A1:A10,在B1输入=ABS(A1),下拉追答
那可能要用到自定义函数。
Alt+F11,插入模块:
Function SortAbs(arr)
n = arr
m = UBound(n)
For i = 1 To m
MaxNAbs = Abs(n(i, 1))
For j = i To m
If Abs(n(j, 1)) >= MaxNAbs Then MaxN = n(j, 1): MaxNAbs = Abs(n(j, 1)): t = j
Next
n(t, 1) = n(i, 1)
n(i, 1) = MaxN
Next
SortAbs = n
End Function
选中B1:B10,输入=SortAbs(A1:A10),按Ctrl+Shift+Enter确定。
热心网友 时间:2022-04-29 16:13
首先用绝对值函数,然后再用排序函数。这样就不会有任何问题了热心网友 时间:2022-04-29 18:38
首先用函数ABS获取绝对值;