Excel精英培训网

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

[已解决](VBA难题)提取数据

[复制链接]
发表于 2013-5-27 10:35 | 显示全部楼层 |阅读模式
5学分
L2里面写上小班为依据,点击 查询 在《集材数据库》里提取和《小班查询打印》C6:K6向对应的数据填充到C6;K6下面,画出边框(在有数据的地方C1到K列有数据的自动设置为打印区域。)括号里面的没办法弄也可以,我在慢慢研究别的办法。谢谢
最佳答案
2013-5-27 11:20
Sub test()
    Dim a, i, k, arra, arrb, cx
    cx = Sheets(2).[l2]
    a = Sheets(1).Cells(60000, 1).End(xlUp).Row
    arra = Sheets(1).Cells(1, 1).Resize(a, 14)
    ReDim arrb(1 To a, 1 To 9)
    For i = 3 To a
        If arra(i, 3) = cx Then
            k = k + 1
            arrb(k, 1) = arra(i, 1)
            arrb(k, 2) = arra(i, 2)
            arrb(k, 3) = arra(i, 4)
            arrb(k, 4) = arra(i, 5)
            arrb(k, 5) = arra(i, 6)
            arrb(k, 6) = arra(i, 7)
            arrb(k, 7) = arra(i, 8)
            arrb(k, 8) = arra(i, 9)
            arrb(k, 9) = arra(i, 10)
        End If
    Next i
    Sheets(2).Cells(7, 3).Resize(UBound(arrb), 9) = arrb
End Sub

(VBA难题)提取数据.zip

41.39 KB, 下载次数: 14

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-5-27 11:20 | 显示全部楼层    本楼为最佳答案   
Sub test()
    Dim a, i, k, arra, arrb, cx
    cx = Sheets(2).[l2]
    a = Sheets(1).Cells(60000, 1).End(xlUp).Row
    arra = Sheets(1).Cells(1, 1).Resize(a, 14)
    ReDim arrb(1 To a, 1 To 9)
    For i = 3 To a
        If arra(i, 3) = cx Then
            k = k + 1
            arrb(k, 1) = arra(i, 1)
            arrb(k, 2) = arra(i, 2)
            arrb(k, 3) = arra(i, 4)
            arrb(k, 4) = arra(i, 5)
            arrb(k, 5) = arra(i, 6)
            arrb(k, 6) = arra(i, 7)
            arrb(k, 7) = arra(i, 8)
            arrb(k, 8) = arra(i, 9)
            arrb(k, 9) = arra(i, 10)
        End If
    Next i
    Sheets(2).Cells(7, 3).Resize(UBound(arrb), 9) = arrb
End Sub

评分

参与人数 1 +1 收起 理由
5aoffice + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2013-5-27 11:24 | 显示全部楼层
Sub kk()
Dim dyaq As Worksheet
Dim ovrn As Worksheet
Set dyaq = Sheets("小班查询打印")
Set ovrn = Sheets("集材数据库")
nn = dyaq.Cells.Find("*", , , , , xlPrevious).Row
dyaq.Range("c7:l" & nn).Delete
mm = dyaq.Range("l2")
mx = ovrn.Cells.Find(mm, , , , , xlNext).Row
my = ovrn.Cells.Find(mm, , , , , xlPrevious).Row

ovrn.Range("a" & mx & ":l" & my).Copy dyaq.Range("c7")
End Sub
回复

使用道具 举报

发表于 2013-5-27 20:54 | 显示全部楼层
来学习的                       
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 02:25 , Processed in 0.294866 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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