Excel精英培训网

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

[已解决]VBA批量查询功能

[复制链接]
发表于 2013-9-18 15:15 | 显示全部楼层 |阅读模式
请各位老师帮忙给解决一个问题,谢谢了

我有一个子、母件的对应表,有时要查找某个母件对应什么子件,查找一下也很方便,但是有时要查找很多母件,一个个的查找起来很麻烦,所以请请教各位,能不能用VBA实现将所有要查询的一次性全显示出来
最佳答案
2013-9-20 07:57
可修改为:
Sub TEST()
    Range("B2:W65500").ClearContents
    ARR = Sheets(1).Range("A2:A" & Sheets(1).Range("A65536").End(3).Row)
    BRR = Sheets(2).Range("A2:A" & Sheets(2).Range("A65536").End(3).Row)
    If IsArray(ARR) Then
        For I = 1 To UBound(ARR)
            For J = 1 To UBound(BRR)
                If ARR(I, 1) = BRR(J, 1) Then
                    AD = Sheets(1).Cells(I + 1, 255).End(1)(1, 2).Address
                    Sheets(2).Range("B" & J + 1 & ":C" & J + 1).Copy Sheets(1).Range(AD)
                End If
            Next
        Next
    Else
        For J = 1 To UBound(BRR)
            If ARR = BRR(J, 1) Then
                AD = Sheets(1).Cells(2, 255).End(1)(1, 2).Address
                Sheets(2).Range("B" & J + 1 & ":C" & J + 1).Copy Sheets(1).Range(AD)
            End If
        Next
    End If
End Sub

示例.rar

9.16 KB, 下载次数: 49

发表于 2013-9-18 15:58 | 显示全部楼层
本帖最后由 zjdh 于 2013-9-18 16:09 编辑

示例.rar (16.05 KB, 下载次数: 69)
回复

使用道具 举报

 楼主| 发表于 2013-9-18 16:57 | 显示全部楼层
zjdh 发表于 2013-9-18 15:58

Sub TEST()
    Range("B2:W65500").ClearContents
    ARR = Sheets(1).Range("A2:A" & Sheets(1).Range("A65536").End(3).Row)
    BRR = Sheets(2).Range("A2:A" & Sheets(2).Range("A65536").End(3).Row)
    For i = 1 To UBound(ARR)
        For j = 1 To UBound(BRR)
            If ARR(i, 1) = BRR(j, 1) Then
               AD = Sheets(1).Cells(i + 1, 255).End(1)(1, 2).Address
                Sheets(2).Range("B" & j + 1 & ":C" & j + 1).Copy Sheets(1).Range(AD)
            End If
        Next
    Next
End Sub


请问大神,为什么我查询某一个时提示    类型不匹配


回复

使用道具 举报

发表于 2013-9-18 22:42 | 显示全部楼层
hackcan 发表于 2013-9-18 16:57
Sub TEST()
    Range("B2:W65500").ClearContents
    ARR = Sheets(1).Range("A2:A" & Sheets(1).Ran ...

那是因为只有一个时,ARR就不是数组啦!
回复

使用道具 举报

发表于 2013-9-20 07:56 | 显示全部楼层
可修改为:
Sub TEST()
    Range("B2:W65500").ClearContents
    ARR = Sheets(1).Range("A2:A" & Sheets(1).Range("A65536").End(3).Row)
    BRR = Sheets(2).Range("A2:A" & Sheets(2).Range("A65536").End(3).Row)
    If IsArray(ARR) Then
        For I = 1 To UBound(ARR)
            For J = 1 To UBound(BRR)
                If ARR(I, 1) = BRR(J, 1) Then
                    AD = Sheets(1).Cells(I + 1, 255).End(1)(1, 2).Address
                    Sheets(2).Range("B" & J + 1 & ":C" & J + 1).Copy Sheets(1).Range(AD)
                End If
            Next
        Next
    Else
        For J = 1 To UBound(BRR)
            If ARR = BRR(J, 1) Then
                AD = Sheets(1).Cells(2, 255).End(1)(1, 2).Address
                Sheets(2).Range("B" & J + 1 & ":C" & J + 1).Copy Sheets(1).Range(AD)
            End If
        Next
    End If
End Sub
回复

使用道具 举报

发表于 2013-9-20 07:57 | 显示全部楼层    本楼为最佳答案   
可修改为:
Sub TEST()
    Range("B2:W65500").ClearContents
    ARR = Sheets(1).Range("A2:A" & Sheets(1).Range("A65536").End(3).Row)
    BRR = Sheets(2).Range("A2:A" & Sheets(2).Range("A65536").End(3).Row)
    If IsArray(ARR) Then
        For I = 1 To UBound(ARR)
            For J = 1 To UBound(BRR)
                If ARR(I, 1) = BRR(J, 1) Then
                    AD = Sheets(1).Cells(I + 1, 255).End(1)(1, 2).Address
                    Sheets(2).Range("B" & J + 1 & ":C" & J + 1).Copy Sheets(1).Range(AD)
                End If
            Next
        Next
    Else
        For J = 1 To UBound(BRR)
            If ARR = BRR(J, 1) Then
                AD = Sheets(1).Cells(2, 255).End(1)(1, 2).Address
                Sheets(2).Range("B" & J + 1 & ":C" & J + 1).Copy Sheets(1).Range(AD)
            End If
        Next
    End If
End Sub
回复

使用道具 举报

 楼主| 发表于 2013-9-22 08:04 | 显示全部楼层
zjdh 发表于 2013-9-20 07:57
可修改为:
Sub TEST()
    Range("B2:W65500").ClearContents

先谢谢大哥了,等下去试试!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 06:16 , Processed in 0.444307 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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