Excel精英培训网

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

[已解决]求高手帮忙,用vba解决筛选后复制数据到另一个表中

[复制链接]
发表于 2011-9-22 17:41 | 显示全部楼层 |阅读模式
本帖最后由 jimolaojiu 于 2011-9-22 18:01 编辑

对于vba的学习,我是个新手,但工作上极需解决现在遇到的问题,求高手指点。从总表中分别把各分店筛选(用分店名称筛选)出来,然后把数据再复制到相关的各分店的表中,谢谢。
最佳答案
2011-9-22 19:01
  1. Option Explicit

  2. Sub AutoFil()
  3. Dim ForI As Long, EndRow As Long, StrCriteria1 As String
  4. '定义循环变量ForI,求最后非空单元格行号EndRow,筛选值变量StrCriteria1
  5. Application.ScreenUpdating = False
  6. '禁止屏幕刷新功能
  7. Sheet1.Range("A1:E1").AutoFilter
  8. 'A1:E1自动筛选
  9. For ForI = 1 To Sheets.Count
  10. '从1开始循环到工作表的总个数
  11. If Sheets(ForI).Name <> "总表" Then
  12. '判断,如果循环到的工作表名称不等于 总表 那么运行下面代码
  13. StrCriteria1 = Sheets(ForI).Name
  14. '将当前循环到的工作表名称赋值给变量StrCriteria1
  15. Sheet1.Range("A1").AutoFilter Field:=1, Criteria1:=StrCriteria1
  16. '筛选A1单元格的值为变量StrCriteria1的值
  17. EndRow = Sheet1.Range("A65536").End(xlUp).Row
  18. '求总表以A列为准的最后一个非空单元格行号
  19. Sheets(ForI).Cells.Clear
  20. '清除当前循环到的工作表
  21. Sheet1.Range("A1:E" & EndRow).Copy Sheets(ForI).Range("A1")
  22. '将筛选的结果复制到当前循环到的工作表
  23. End If
  24. Next
  25. Sheet1.Range("A1:E1").AutoFilter
  26. '取消自动筛选
  27. Application.ScreenUpdating = True
  28. '恢复屏幕刷新
  29. End Sub
复制代码

筛选后复制数据到另一个表中.rar (8.75 KB, 下载次数: 865)

筛选后复制数据到另一个表中.rar

1.62 KB, 下载次数: 205

vba筛选复制

发表于 2011-9-22 19:01 | 显示全部楼层    本楼为最佳答案   
  1. Option Explicit

  2. Sub AutoFil()
  3. Dim ForI As Long, EndRow As Long, StrCriteria1 As String
  4. '定义循环变量ForI,求最后非空单元格行号EndRow,筛选值变量StrCriteria1
  5. Application.ScreenUpdating = False
  6. '禁止屏幕刷新功能
  7. Sheet1.Range("A1:E1").AutoFilter
  8. 'A1:E1自动筛选
  9. For ForI = 1 To Sheets.Count
  10. '从1开始循环到工作表的总个数
  11. If Sheets(ForI).Name <> "总表" Then
  12. '判断,如果循环到的工作表名称不等于 总表 那么运行下面代码
  13. StrCriteria1 = Sheets(ForI).Name
  14. '将当前循环到的工作表名称赋值给变量StrCriteria1
  15. Sheet1.Range("A1").AutoFilter Field:=1, Criteria1:=StrCriteria1
  16. '筛选A1单元格的值为变量StrCriteria1的值
  17. EndRow = Sheet1.Range("A65536").End(xlUp).Row
  18. '求总表以A列为准的最后一个非空单元格行号
  19. Sheets(ForI).Cells.Clear
  20. '清除当前循环到的工作表
  21. Sheet1.Range("A1:E" & EndRow).Copy Sheets(ForI).Range("A1")
  22. '将筛选的结果复制到当前循环到的工作表
  23. End If
  24. Next
  25. Sheet1.Range("A1:E1").AutoFilter
  26. '取消自动筛选
  27. Application.ScreenUpdating = True
  28. '恢复屏幕刷新
  29. End Sub
复制代码

筛选后复制数据到另一个表中.rar (8.75 KB, 下载次数: 865)

评分

参与人数 2 +4 收起 理由
thelastdance + 3 很给力
jimolaojiu + 1 谢谢兄弟。

查看全部评分

回复

使用道具 举报

发表于 2013-12-20 14:16 | 显示全部楼层
回复

使用道具 举报

发表于 2014-1-25 23:01 | 显示全部楼层
学习了

谢谢了
回复

使用道具 举报

发表于 2015-12-10 11:30 | 显示全部楼层
学习一下
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 18:02 , Processed in 0.304353 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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