我们都知道,在Excel中可以进行数据的排序,非常方便。
但是,此排序功能却有着一个致命的弱点,那就是,对于被修改过的数据,只能重新进行排序,才能看到效果。
如果我们想要在Excel中修改数据,不用重新排序,就能得到排序后的效果,如何实现呢?
方法非常简单,不过得使用VBA来实现!
如上图,当我们修改Shee1中的B列,即成绩中的成绩,马上就可以实现排序。
操作方法如下:
使用鼠标右键点击“Sheet1”,在弹出的快捷菜单中选择“查看代码”,如下图!
之后,进入到VBA代码输入窗口,在窗口中输入如下代码即可。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim LmaxR As Long
LmaxR = Sheet1.UsedRange.Row
With Sheet1.Range("B2:B" & LmaxR)
.CurrentRegion.Sort key1:=Range("B1"), Header:=xlYes
.Value = .Value
.Parent.[B1] = "成绩"
End With
End Sub
如上代码的功能,是这样的,无论您修改了整个工作薄中的任何一个单元格的值,那么,都将对Sheet1中的B列数据进行重新排序。这种排序是即时的排序,一修改值,马上就排序,用不着您使用菜单上的排序功能。
如何修改如上代码:
上面的代码要实现的即时排序,是针对Sheet1中的B列进行的排序。如果您想在其它表里面实现这种功能,那么,请修改如下几个地方:
①Sheet1.UsedRange.Row 将Sheet1改为其它表的名称
②修改要排序的列名
With Sheet1.Range("B2:B" & LmaxR)
.CurrentRegion.Sort key1:=Range("B1"), Header:=xlYes
.Value = .Value
上面的代码,有B的地方,都修改为要排序的列,如排序第三列,那么,就修改为C,其它依此类推。
③最后要修改的地方
.Parent.[B1] = "成绩"
就是这里了,如果您要排序的是D列,而D列第一个单元格的内容是“工资”,这里相当于列名称,那么,修改为.Parent.[D1] = "工资"
到这里,就全部结束了,希望本文对您有所帮助。