ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 313|回复: 10

[求助] 利用VBA在数据总表,对数据进行按条件提取到指定表格

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-7-4 11:28 | 显示全部楼层 |阅读模式
大家好!
我是菜鸟,非常感谢EXCELHOME陪我成长的这几年,有一这边奉献的朋友!真了不起!
我再次求助:例如有这样的一个总表格:而且在不断地更新;

image.jpg
我希望通过一个按钮,或者直接可以自动,按班级的条件,分别把对于行数据复制到对应的表格;
我在网上学习到以下代码:

Sub 按钮1_Click()
        Dim j As Byte
           For j = 2 To Worksheets.Count
                         Worksheets("成绩表").Range("A1:G1").Copy Destination:=Worksheets(j).Range("A1")
                Next
  
End Sub

这段是把表头按条件复制到对应表格,
但是把内容按条件增加就出现问题
image.png



数据分类更新VBA.rar

21.6 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2024-7-4 11:43 | 显示全部楼层
拆分。。。。。供参考。

数据分类更新VBA.zip

23.2 KB, 下载次数: 15

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-4 11:54 | 显示全部楼层
skiss 发表于 2024-7-4 11:43
拆分。。。。。供参考。

非常感谢skiss前辈!体验非常好!谢谢你

TA的精华主题

TA的得分主题

发表于 2024-7-4 15:49 | 显示全部楼层
就是一个总表按班级拆分。

附件供参考,按原格式拆分。

数据分类更新VBA.zip

30.55 KB, 下载次数: 13

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-7-4 15:50 | 显示全部楼层
总表拆分为多表,原格式

  1. Sub ykcbf()  '//2024.7.4
  2.     Dim arr, brr, d
  3.     Set d = CreateObject("scripting.dictionary")
  4.     Application.ScreenUpdating = False
  5.     Application.DisplayAlerts = False
  6.     Dim tm: tm = Timer
  7.     Set ws = ThisWorkbook
  8.     Set sh = ws.Sheets("成绩表")
  9.     bt = 1
  10.     For Each sht In Sheets
  11.         If sht.Name <> sh.Name Then sht.Delete
  12.     Next
  13.     arr = sh.UsedRange
  14.     For i = bt + 1 To UBound(arr)
  15.         s = arr(i, 3)    '//按班级拆分
  16.         If s <> Empty Then
  17.             If Not d.Exists(s) Then
  18.                 Set d(s) = CreateObject("scripting.dictionary")
  19.             End If
  20.             d(s)(i) = Application.Index(arr, i)
  21.         End If
  22.     Next i
  23.     For Each k In d.keys
  24.         sh.Copy after:=Sheets(Sheets.Count)
  25.         Set sht = Sheets(Sheets.Count)
  26.         m = d(k).Count
  27.         With sht
  28.             .Name = k
  29.             .UsedRange.Offset(m + bt).Clear
  30.             .DrawingObjects.Delete
  31.             .Cells(bt + 1, 1).Resize(m, UBound(arr, 2)) = Application.Rept(d(k).Items, 1)
  32.         End With
  33.     Next k
  34.     sh.Activate
  35.     Set d = Nothing
  36.     Application.DisplayAlerts = True
  37.     Application.ScreenUpdating = True
  38.     MsgBox "共用时:" & Format(Timer - tm) & "秒!"
  39. End Sub

复制代码


TA的精华主题

TA的得分主题

发表于 2024-7-4 16:19 | 显示全部楼层
Sub qs() '2024/7/4数据进行按条件复制到指定表格
Dim arr, dic, i, sht As Worksheet
arr = Sheet1.Range("a1").CurrentRegion
Set dic = CreateObject("scripting.dictionary")
For i = 2 To UBound(arr)
    s = arr(i, 3)
    If Not dic.exists(s) Then dic(s) = ""
Next
Set sht = Sheets("成绩表")
With sht.Range("a1").CurrentRegion
For Each k In dic.keys
    .AutoFilter
    .AutoFilter Field:=3, Criteria1:=k
    .Copy Sheets(k).Range("a1")
Next
.AutoFilter
End With
End Sub

TA的精华主题

TA的得分主题

发表于 2024-7-4 16:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-7-4 16:22 | 显示全部楼层
试试........

数据分类更新VBA.rar

25.73 KB, 下载次数: 13

TA的精华主题

TA的得分主题

发表于 2024-7-4 16:46 | 显示全部楼层
ykcbf1100 发表于 2024-7-4 15:49
就是一个总表按班级拆分。

附件供参考,按原格式拆分。

向老师学习

TA的精华主题

TA的得分主题

发表于 2024-7-4 16:56 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 23:43 , Processed in 0.035295 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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