使用VBA实现VLOOKUP的查找与填充的功能

Sub 匹配系统信息()
    Dim d As Object, Arr, Brr, Crr, dl, i&, s
    Dim wb As Workbook
    Set d = CreateObject("scripting.dictionary") '字典
    Set dl = CreateObject("scripting.dictionary") '字典
    Sheet1.Activate
    [A2:B5000].ClearContents '清空
    [D2:D5000].ClearContents '清空
    Crr = Sheets("查询").[a1].CurrentRegion
    Set wb = Workbooks.Open(ThisWorkbook.Path & "\数据源.xlsx") '打开数据源
    '多条件查询
    Arr = wb.Sheets("查询NR_DU小区静态参数").[a1].CurrentRegion '打开数据源查询NR_DU小区静态参数
    For i = 2 To UBound(Arr)
        d(Arr(i, 2) & Arr(i, 6)) = Array(Arr(i, 1), Arr(i, 5))
    Next
    '单条件查询
    Brr = wb.Sheets("查询gNodeB功能").[a1].CurrentRegion
    For i = 2 To UBound(Brr)
        dl(Brr(i, 2)) = Brr(i, 5)
    Next
    '关闭数据源
    wb.Close False
    '单条件查询加取值前五位字符
    For i = 2 To UBound(Crr)
        If d.exists(Crr(i, 3) & Crr(i, 5)) Then
            s = d(Crr(i, 3) & Crr(i, 5))
            Crr(i, 1) = Left(s(0), 5)
            Crr(i, 4) = s(1)
        End If
        If dl.exists(Crr(i, 3)) Then
            Crr(i, 2) = dl(Crr(i, 3))
        End If
    Next
    [a1].CurrentRegion = Crr
    Set d = Nothing
    Set dl = Nothing
End Sub

转载
https://club.excelhome.net/thread-1658766-1-1.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VBA中的VLOOKUP函数可以用于跨表查询。它可以在一个表格中查找一个值,并返回该值所在行的另一个列的值。在跨表查询中,您需要指定要查询的表格的名称或范围,并使用VLOOKUP函数来执行查询。您还需要指定要查找的值以及要返回的列的索引号。 ### 回答2: VBA VLOOKUP函数是一种跨表查询的方法,在Excel使用VLOOKUP函数可以实现在一个表格中查找一列数据,并返回该数据对应的指定列的数据。而通过VBA语言,我们可以更加灵活地使用VLOOKUP函数来进行跨表查询。 在VBA中,我们可以使用如下语句来调用VLOOKUP函数:WorksheetFunction.VLookup(lookup_value, table_array, col_index_num, range_lookup)。其中,lookup_value为要查找的数据,table_array为数据表格的范围,col_index_num为要返回的数据所在的列的序号,range_lookup用于指定是否进行近似匹配。 例如,我们有两个数据表格A和B,表格A中有一列数据需要在表格B中查找对应的值,并返回该值所在的列的数据。首先,我们需要将表格A和B导入VBA中,可以通过ActiveSheet.ListObjects(1)来获取数据表格的范围。 然后,我们可以使用VLookup函数来进行跨表查询。假设我们要在表格B中查找表格A中的第一列数据,并返回表格B中该数据对应的第二列数据,可以使用如下代码: ```VBA Dim lookup_value As Variant Dim table_array As Range Dim col_index_num As Long lookup_value = ActiveSheet.ListObjects(1).ListColumns(1).Range.Value Set table_array = ActiveSheet.ListObjects(2).Range col_index_num = 2 For i = 1 To UBound(lookup_value) If Not IsEmpty(lookup_value(i, 1)) Then ActiveSheet.Cells(i, 2).Value = WorksheetFunction.VLookup(lookup_value(i, 1), table_array, col_index_num, False) End If Next i ``` 其中,第一行代码定义了需要查找的数据,第二行代码定义了要进行查找的数据表格范围,第三行代码定义了要返回的数据所在的列的序号。通过使用For语句循环遍历查找的数据,如果查找到了对应的值,则将其返回的值写入到相应的单元格中。 总之,使用VBA VLOOKUP函数进行跨表查询可以更加方便和灵活的处理大量的数据,是数据处理和分析的重要方法之一。 ### 回答3: VBA中的VLOOKUP函数可以用于在一个表格中寻找特定值,并返回该值所在行或列的其他值。在跨表查询中,我们可以使用VLOOKUP函数将一个表格中的数据与另一个表格进行匹配,从而实现对另一个表格的查询。 具体地说,跨表查询需要我们先确定两个表格中的匹配条件,即两个表格都具有共同的数据列,可以将这一列作为公共键值(key),实现两个表格间的联系。在查询时,我们需要通过VLOOKUP函数来访问另一张表格,以寻找所需的数据。VLOOKUP函数的基本语法为: VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup]) 其中,lookup_value表示要查找的值,table_array表示查询范围,col_index_num表示返回结果的列数,range_lookup则表示是否在查询范围中查找近似的值。在跨表查询中,table_array通常是另一张表格的数据区域。 比如说,我们有两个表格A和B,表格A中有一列为“客户姓名”,表格B中也有一列为“客户姓名”,我们可以通过这一列作为公共键值,实现跨表查询。具体方法为,在表格A中插入一列公式“=VLOOKUP(B1,Table_B,2,0)”(其中Table_B为表格B的数据区域),将公式填充至表格A中所有行,这样就可以在表格A中查询表格B中“客户姓名”对应的其他数据了。 需要注意的是,跨表查询中的公式可能会比较复杂,因此建议提前将公式在一个简单的脚本中进行测试,确保其能够正常运行。此外,如果涉及大量数据的查询,建议使用数据库等更高效的数据处理方式来实现跨表查询,避免VLOOKUP函数的性能瓶颈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值