Excel精英培训网

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

[已解决]选择性复制数据到另一张表

[复制链接]
发表于 2014-9-26 15:41 | 显示全部楼层 |阅读模式
本帖最后由 东海飞龙 于 2014-9-28 09:52 编辑

选择性数据筛选数据到另一张表中,
代码在里面,可能选择sheet2的G2单元格的值为月报的时候,
数据和sheet1表里的数据有点差异,请老师帮指导下,具体见附件。
最佳答案
2014-9-27 10:36
{:2812:}
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-9-26 15:47 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-9-26 15:57 | 显示全部楼层
这儿有肥猫 发表于 2014-9-26 15:47
附件在哪里?

上传附件错误,上传不了,晚上我回家传一次
回复

使用道具 举报

 楼主| 发表于 2014-9-26 22:34 | 显示全部楼层
这儿有肥猫 发表于 2014-9-26 15:47
附件在哪里?

附件在此

tttestxm.zip

446.36 KB, 下载次数: 27

回复

使用道具 举报

 楼主| 发表于 2014-9-27 10:11 | 显示全部楼层
Sub NewSht()
    Dim Sh As Worksheet
    Dim Arr, k&, Ary, i&
    Dim Dic As Object, Itm

    Set Dic = CreateObject("Scripting.Dictionary")
    Set Sh = ActiveSheet
    Arr = [A1].CurrentRegion
    For k = 2 To UBound(Arr)
        Dic(Arr(k, 6)) = ""
    Next

    For Each Itm In Dic
        Ary = Arr: i = 1
        For k = 2 To UBound(Arr)
            If Arr(k, 6) = Itm Then
                i = i + 1
                Ary(i, 1) = Arr(k, 1)
                Ary(i, 2) = Arr(k, 2)
                Ary(i, 3) = Arr(k, 3)
                Ary(i, 4) = Arr(k, 4)
                Ary(i, 5) = Arr(k, 5)
                Ary(i, 6) = Arr(k, 6)
                Ary(i, 7) = Arr(k, 7)
            End If
        Next
        Sheets.Add after:=Sh
        ActiveSheet.Name = Itm
        ActiveSheet.[A1].Resize(i, 7) = Ary
    Next
    Dic.RemoveAll
End Sub


回复

使用道具 举报

 楼主| 发表于 2014-9-27 10:13 | 显示全部楼层
已经完成
回复

使用道具 举报

发表于 2014-9-27 10:36 | 显示全部楼层    本楼为最佳答案   
{:2812:}
回复

使用道具 举报

发表于 2014-9-28 09:12 | 显示全部楼层
都没来得及看。。。
不过这段可以用个循环
For k = 2 To UBound(Arr)
            If Arr(k, 6) = Itm Then
                i = i + 1
                Ary(i, 1) = Arr(k, 1)
                Ary(i, 2) = Arr(k, 2)
                Ary(i, 3) = Arr(k, 3)
                Ary(i, 4) = Arr(k, 4)
                Ary(i, 5) = Arr(k, 5)
                Ary(i, 6) = Arr(k, 6)
                Ary(i, 7) = Arr(k, 7)
            End If
        Next
减少代码
For k = 2 To UBound(Arr)
            If Arr(k, 6) = Itm Then
                i = i + 1
               for j =1 to 7
                    Ary(i, j) = Arr(k, j)
               next
            End If
        Next
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 19:00 , Processed in 0.371506 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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