Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4651|回复: 10

[已解决]求一个EXcl 循环筛选的语句

[复制链接]
发表于 2013-1-25 12:53 | 显示全部楼层 |阅读模式
5学分
跪求啊,附件里有说明
最佳答案
2013-1-25 15:23
long595930 发表于 2013-1-25 14:20
哥们能留个QQ 或者电话吗

代码有问题直接在这说,这个不便留。

求一个循环筛选的语句.zip

327.7 KB, 下载次数: 21

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2013-1-25 13:03 | 显示全部楼层
人在线呢,有什么看不明白可以问哦,或者加我QQ 420124367
回复

使用道具 举报

发表于 2013-1-25 13:55 | 显示全部楼层
新建 Microsoft Excel 工作表.rar (334.11 KB, 下载次数: 7)
回复

使用道具 举报

发表于 2013-1-25 13:56 | 显示全部楼层
建议把每次更新号的列标专门存储在一个特定的单元格,这样文档关闭后不用从J列开始了,虽然只用多点几次而已。
回复

使用道具 举报

发表于 2013-1-25 13:57 | 显示全部楼层
另外,如果数据的列如果会不停的增加的话,代码就还得改下。
回复

使用道具 举报

 楼主| 发表于 2013-1-25 14:01 | 显示全部楼层
偶学习下,不过先谢谢啦
回复

使用道具 举报

 楼主| 发表于 2013-1-25 14:03 | 显示全部楼层
这位大哥,您是不是忘记贴代码了= =
回复

使用道具 举报

发表于 2013-1-25 14:06 | 显示全部楼层
修改后数据列可增加,另外如果数据操作的列超出了限制会提示"数据列溢出而退出操作。
新建 Microsoft Excel 工作表.rar (336.02 KB, 下载次数: 7)
回复

使用道具 举报

发表于 2013-1-25 14:09 | 显示全部楼层
本帖最后由 hwc2ycy 于 2013-1-25 14:14 编辑

再修改,在代码开始运行后就进行列标溢出的判断,避免先操作了一大段数据后,发现无效再提示,这样可以提高效率。
  1. Option Explicit

  2. Public Col&

  3. Sub test()
  4.     Dim iRow&, arrj, i&, LastCol&
  5.     Application.ScreenUpdating = False
  6.     iRow = Cells(Rows.Count, "j").End(xlUp).Row '行
  7.     LastCol = [a1].End(xlToRight).Column        '列
  8.     If Col >= LastCol Then MsgBox "数据列标溢出": Exit Sub   '列溢出判断
  9.    
  10.     arrj = Range("j2:j" & iRow).Value                       '读取J列数据
  11.     Range("j2:j" & iRow) = arrj                             '写回数值
  12.    
  13.     With ActiveSheet.Sort
  14.         With .SortFields
  15.             .Clear                                          '先清空原有排序字段,再添加
  16.             .Add Key:=Range( _
  17.                       "J2:J" & iRow), SortOn:=xlSortOnValues, Order:=xlDescending    ', DataOption:= xlSortNormal
  18.         End With
  19.         .SetRange Range(Cells(1, 1), Cells(iRow, LastCol))      '设置排序区域
  20.         .Header = xlYes                                         '标题行
  21.         .Apply
  22.     End With

  23.     If Col = 0 Then                                             '工作簿打开后第一次执行时COL为0,所以改为J列
  24.         Col = 11
  25.     Else
  26.         Col = Col + 1                                           '第二次或第N次运行,列自动加1
  27.     End If

  28.     arrj = Range(Cells(2, Col - 1), Cells(iRow, Col - 1))       '上列数据加
  29.     For i = LBound(arrj) To UBound(arrj)
  30.         arrj(i, 1) = arrj(i, 1) + 1                             '加1
  31.     Next
  32.     Range(Cells(2, Col), Cells(iRow, Col)) = arrj               '数据写回工作表
  33.     MsgBox "操作完成", vbInformation + vbOKOnly
  34.     Application.ScreenUpdating = True
  35. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-1-25 14:20 | 显示全部楼层
哥们能留个QQ 或者电话吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 18:27 , Processed in 0.652183 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表