Dzwebs.Net

撰写电脑技术杂文十余年

vba实时排序Excel被修改过的数据的代码

Admin | 2009-12-24 12:41:33 | 被阅次数 | 11213

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  我们都知道,在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] = "工资"

  到这里,就全部结束了,希望本文对您有所帮助。


该杂文来自: Excel杂文

上一篇:Excel数据透视表是什么

下一篇:如何同步更新两个或多个工作薄的内容

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计