如何实现excel 自动实时的排序?

发布网友 发布时间:2022-03-16 12:32

我来回答

7个回答

懂视网 时间:2022-03-16 16:54

excel排序的方法:

1.用电脑里的Excel软件,打开表格文件。

2.选择要排序的内容,点击上方数据。

3.打开排序功能,选择以当前选定区域排序。

4.点击排序,选择确定即可。

热心网友 时间:2022-03-16 14:02

录制排序宏之后,按“Alt+F11”开启VBA编辑界面,双击sheet1,并在右侧下拉菜单中,选择“worksheet”、“change”

代码如下:

Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A:A"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("A:A")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

在表格A列输入内容,则可自动排序。


热心网友 时间:2022-03-16 15:20

A1为序号,B1为文件名称,在A2输入=IF(B2="","",SUBTOTAL(103,$B$2:B2))

热心网友 时间:2022-03-16 16:54

不可能这样,不然Excel都乱套了。
但可在B列设置:
B1输入
=SMALL(A:A,ROW())

=IF(A1="","",SMALL(A:A,ROW()))
回车并向下填充(下拉)

热心网友 时间:2022-03-16 18:46

用如下VBA程序:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim i1 As Long, i2 As Long, imax As Long
Dim arr(65536) As Double, temp As Double
imax = Range("A65536").End(xlUp).Row
For i1 = 1 To imax
arr(i1) = Range("A" & i1).Value
Next i1
If Target.Column = 1 Then
For i1 = 1 To imax - 1
For i2 = imax - 1 To i1 Step -1
If arr(i2) > arr(i2 + 1) Then
temp = arr(i2)
arr(i2) = arr(i2 + 1)
arr(i2 + 1) = temp
End If
Next i2
Next i1
End If
For i1 = 1 To imax
Range("A" & i1).Value = arr(i1)
Next i1
Application.EnableEvents = True
End Sub追问厉害啊!!!!!!!能讲一下实现原理吗??如何举一反三?分大大的有。。

热心网友 时间:2022-03-16 20:54

这个如果不用VBA,就必须要辅助列或表来实现追问HOW

追答用推荐答案就可以了呀

热心网友 时间:2022-03-16 23:18

rank()

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com