精华内容
下载资源
问答
  • vba实现vlookup

    2014-05-17 10:49:49
    vba实现vlookup功能,vlookup在查找引用很多数据时会很慢。vba可以实现快速查找
  • 如果仅仅是使用vLookup这一单一功能当然没必要非得来个VBA编程,但如果你要实现功能比较复杂就不再适合串联使用一大堆Excel公式了,这个时候用VBA编程会更容易,也不容易出错。 程序基本思路 我们要处理的Excel...

    任务介绍

    这一次我们通过VBA编程来实现类似vLookup的功能。当然,你可能要问,既然vLookup能搞定为什么还要用VBA再实现一遍。如果仅仅是使用vLookup这一单一功能当然没必要非得来个VBA编程,但如果你要实现的功能比较复杂就不再适合串联使用一大堆Excel公式了,这个时候用VBA编程会更容易,也不容易出错。

    程序基本思路

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200330173716128.pn
    我们要处理的Excel文件如上图所示。A列和B列分别是姓名和分数,我们要实现的功能是根据D列的姓名,查找出对应的分数并填写在E列。

    VBA编程

    Sub 查找()
    
    Dim l As Long '记录A列一共有多少行,也即是待查找列表有多少行
    Dim l2 As Long '记录D列一共有多少行,也即是待查询的内容有多少行
    
    Dim v1 As String '记录当前的查询内容
    
    l = ActiveSheet.Range("A65536").End(xlUp).row
    l2 = ActiveSheet.Range("D65536").End(xlUp).row
    
    For i = 1 To l2
     v1 = ActiveSheet.Range("D" & i)
     
     For j = 1 To l
        If v1 = ActiveSheet.Range("A" & j) Then
            ActiveSheet.Range("E" & i) = ActiveSheet.Range("B" & j)
            Exit For '既然已经找到了,就提前跳出for循环
        End If
     Next
        
    Next
    
    End Sub
    
    • 下面对一些新内容进行特别说明。这个程序中唯一的新内容就是Exit For这个语句,该语句是用来提前跳出For循环。之所以用这个语句是因为既然已经找到该同学的分数了,那就应该跳出,避免无意义的循环,浪费运算资源。
    • 程序的主体是两个For循环,外层循环是遍历Excel文档的D列,也就是遍历待查询的姓名。内层循环是遍历Excel文档的A列,也就是查询列表。最终实现的效果就是:例如将D1的“小红”与A列中每个姓名依次比较,如果遇到等于“小红”的姓名就将对应的B列的分数填写到E列。

    运行结果

    在这里插入图片描述
    程序运行结果如上图所示,可以看出,该程序实现了类似vLookup的功能,之所以说类似是因为vLookup遇到A列有重名的时候会返回最后一个匹配的值,而该程序会返回第一个匹配的值,具体为什么会这样可以自己思考一下。

    展开全文
  • 通过vba中的循环和数组实现的匹配函数,可以帮助新入门的同学学习VBA程序,同时也希望各位大神指导,如何写出更简单高效的代码。
  • VBA模拟VLOOKUP

    2019-12-11 16:56:58
    EXCLE中VLOOKUP频繁被使用,自动化报表中用VBA实现类似的功能更加方便。 功能实现如图: Sub vlookupfunc() Dim i Dim arr, brr, crr() Dim Dic Dim Targettable, Sourcetbale Set Targettable = ...

    EXCLE中VLOOKUP频繁被使用,自动化报表中用VBA实现类似的功能更加方便。

    功能实现如图:

    Sub vlookupfunc()
        Dim i
        Dim arr, brr, crr()
        Dim Dic
        Dim Targettable, Sourcetbale
    
        Set Targettable = ThisWorkbook.Sheets("Sheet1") 'A表 目标配置表
        Set Sourcetbale = ThisWorkbook.Sheets("Sheet2") 'B表 源数据表
        Set Dic = CreateObject("Scripting.Dictionary")
        
        arr = Targettable.Range("A2:D" & Cells(Rows.Count, 1).End(xlUp).Row)
        brr = Sourcetbale.Range("A2:C" & Cells(Rows.Count, 1).End(xlUp).Row)
        
        For i = 1 To UBound(brr)
            Dic(brr(i, 1)) = Array(brr(i, 2), brr(i, 3))
        Next
        
        ReDim crr(1 To UBound(arr), 1 To 3)
        For i = 1 To UBound(arr)
            For Each k In Dic.keys
                If StrComp(brr(i, 1), k) = 0 Then
                    crr(i, 1) = Dic(k)(0)
                    crr(i, 2) = Dic(k)(1)
                    End If
            Next
        Next
    
        [C2].Resize(UBound(crr), 3).ClearContents
        [C2].Resize(UBound(crr), 3) = crr
        
    End Sub

      END

    展开全文
  • 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理以下文章来源于艾然飞翔,作者宁晨前言在exce中vlookup函数功能非常强大、方便;但总是手动...

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

    以下文章来源于艾然飞翔,作者宁晨

    前言

    在exce中vlookup函数功能非常强大、方便;但总是手动操作,毕竟还是不高效。在VBA里把一系列的手动操作变为一键操作实现目标,是不错的选择。如果你也会使用python的话,会发现目标实现起来,更简单。

    那么使用python操作excel时怎么实现这个功能?

    数据源位置为Sheet1工作表:

    要在另一个工作表Sheet2里查询到上表里的后四列信息:

    实现起来很简单,分三步走:

    第一步:分别读取数据

    #第一步:读取指定数据,注意工作表名称‘Sheet1’的首字母是大写状态

    df_source=pd.read_excel(r'/Users/dxn/Desktop/vlookup.xlsx',header=0,sheet_name='Sheet1',skipfooter=1)

    df_target=pd.read_excel(r'/Users/dxn/Desktop/vlookup.xlsx',header=0,sheet_name='Sheet2')

    第二步:设置两表共享有相同的索引列

    #第二步,设置共有索引

    df_source.set_index('物料名称')

    df_target.set_index('物料名称')

    第三步:update方法完成目标

    #第三步,update方法实现目标

    df_target.update(df_source)

    这三步是目标实现的关键步骤,思路清晰易懂,操作简单。

    完整代码如下:

    import numpy as np

    import pandas as pd

    import os

    import openpyxl

    from openpyxl import Workbook

    #在python中实现excel里的Vlookup函数功能,分三步走

    #创建一个文件夹以存放操作后的文件

    os.mkdir(r'/Users/dxn/Desktop/result')

    #创建工作簿以盛放操作结果表

    wb=Workbook()

    wb.save(r'/Users/dxn/Desktop/result/匹配结果.xlsx')

    #第一步:读取指定数据,注意工作表名称‘Sheet1’的首字母是大写状态

    df_source=pd.read_excel(r'/Users/dxn/Desktop/vlookup.xlsx',header=0,sheet_name='Sheet1',skipfooter=1)

    df_target=pd.read_excel(r'/Users/dxn/Desktop/vlookup.xlsx',header=0,sheet_name='Sheet2')

    #第二步,设置共有索引

    df_source.set_index('物料名称')

    df_target.set_index('物料名称')

    #第三步,update方法实现目标

    df_target.update(df_source)

    #导出形成工作表

    with pd.ExcelWriter(r'/Users/dxn/Desktop/result/匹配结果.xlsx',mode='a') as writer:

    df_target.to_excel(writer,sheet_name='匹配结果')

    本文分享 CSDN - 松鼠爱吃饼干。

    如有侵权,请联系 support@oschina.cn 删除。

    本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

    展开全文
  • 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理以下文章来源于艾然飞翔,作者宁晨前言在exce中vlookup函数功能非常强大、方便;但总是手动...

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

    以下文章来源于艾然飞翔,作者宁晨

    前言

    在exce中vlookup函数功能非常强大、方便;但总是手动操作,毕竟还是不高效。在VBA里把一系列的手动操作变为一键操作实现目标,是不错的选择。如果你也会使用python的话,会发现目标实现起来,更简单。

    那么使用python操作excel时怎么实现这个功能?

    数据源位置为Sheet1工作表:

    b9733bc02d0bddb3b5e54d058b155f04.png

    要在另一个工作表Sheet2里查询到上表里的后四列信息:

    2c81fcba6a6468805efdadfbd236be4f.png
    ae8083f8d9e871d83c29ba8769df1456.png

    实现起来很简单,分三步走:

    第一步:分别读取数据

    #第一步:读取指定数据,注意工作表名称‘Sheet1’的首字母是大写状态df_source=pd.read_excel(r'/Users/dxn/Desktop/vlookup.xlsx',header=0,sheet_name='Sheet1',skipfooter=1)df_target=pd.read_excel(r'/Users/dxn/Desktop/vlookup.xlsx',header=0,sheet_name='Sheet2')

    第二步:设置两表共享有相同的索引列

    #第二步,设置共有索引df_source.set_index('物料名称')df_target.set_index('物料名称')

    第三步:update方法完成目标

    #第三步,update方法实现目标df_target.update(df_source)

    这三步是目标实现的关键步骤,思路清晰易懂,操作简单。

    完整代码如下:

    import numpy as npimport pandas as pdimport osimport openpyxlfrom openpyxl import Workbook#在python中实现excel里的Vlookup函数功能,分三步走#创建一个文件夹以存放操作后的文件os.mkdir(r'/Users/dxn/Desktop/result')#创建工作簿以盛放操作结果表wb=Workbook()wb.save(r'/Users/dxn/Desktop/result/匹配结果.xlsx')#第一步:读取指定数据,注意工作表名称‘Sheet1’的首字母是大写状态df_source=pd.read_excel(r'/Users/dxn/Desktop/vlookup.xlsx',header=0,sheet_name='Sheet1',skipfooter=1)df_target=pd.read_excel(r'/Users/dxn/Desktop/vlookup.xlsx',header=0,sheet_name='Sheet2')#第二步,设置共有索引df_source.set_index('物料名称')df_target.set_index('物料名称')#第三步,update方法实现目标df_target.update(df_source)#导出形成工作表with pd.ExcelWriter(r'/Users/dxn/Desktop/result/匹配结果.xlsx',mode='a') as writer:    df_target.to_excel(writer,sheet_name='匹配结果')
    展开全文
  • 在exce中vlookup函数功能非常强大、方便;但总是手动操作,毕竟还是不高效。在VBA里把一系列的手动操作变为一键操作实现目标,是不错的选择。如果你也会使用python的话,会发现目标实现起来,更简单。那么使用python...
  • 在exce中vlookup函数功能非常强大、方便;但总是手动操作,毕竟还是不高效。在VBA里把一系列的手动操作变为一键操作实现目标,是不错的选择。如果你也会使用python的话,会发现目标实现起来,更简单。那么使用python...
  • 在exce中vlookup函数功能非常强大、方便;但总是手动操作,毕竟还是不高效。在VBA里把一系列的手动操作变为一键操作实现目标,是不错的选择。如果你也会使用python的话,会发现目标实现起来,更简单。那么使用python...
  • 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理以下文章来源于艾然飞翔,作者宁晨前言在exce中vlookup函数功能非常强大、方便;但总是手动...
  • 一Excel里的高级筛选功能,着实令人惊叹,VBA实现起来也相对简单,就是手动操作的代码化,设置好三项参数,便可以随取随用,效果稳准快。二在python 中实现同样的目的,更为直白爽快,不信你看:源数据,在一个...
  • 在exce中vlookup函数功能非常强大、方便;但总是手动操作,毕竟还是不高效。在VBA里把一系列的手动操作变为一键操作实现目标,是不错的选择。如果你也会使用python的话,会发现目标实现起来,更简单。 那么使用...
  • 最近工作用到数据对比处理,Excel用的比较多,奈何自己VBA不够熟悉,复杂... 本文代码只是模拟excel中VLOOKUP函数为例,具体实践中,可以根据自己需要,修改功能代码。 1、安装打包所需的pyinstaller: pip inst...
  • 在excel中使用vba实现查询、统计系统

    千次阅读 2020-07-15 11:16:20
    在一个表里面的查询统计只需要用到count,vlookup函数即可完成,我们这里有多张表需要循环查找,所以要通过vba实现 上面查询和统计是两个按钮,所以要分成两个宏来写 vba调用工作表函数的方法:Ap.
  • 实现多个工作表数据的查询,统计功能,如下图:分析:在一个表里面的查询统计只需要用到count,vlookup函数即可完成,我们这里有多张表需要循环查找,所以要通过vba实现上面查询和统计是两个按钮...
  • 课程涵盖.系统开发背景及实现功能简介 ● 2.EXCEL技巧一宏...系统开发思路及VLOOKUP使用 ● 4.按EXCEL既定格式出表 ● 5.EXCEL实现用户登录及权限控制 ● 6.利用宏和VBA实现数据查询 ● 7.EXCEL技巧及编程学习方法。...
  • VBA中使用EXCEL工作表函数

    千次阅读 2018-05-23 12:29:08
    例如FIND(),VLOOKUP(),在VBA的函数库中是没有的。通常,为了实现这些功能,我们需要自己写这些函数,但是还有另外一种方法,通过Application对象调用这些函数,方法如下:Application.WorksheetFunction.Find....
  • 更内置了比Vlookup()函数更强大且好用的VlookupIn()函数。能对VBA宏程式能实现撤销与还原操作,防止鼠标误点功能与误操作。在EXCEL另存DBF功能的基础上还可以轻松实现对所有SQL数据库(*.DBF)文件进行加密或解密操作,...
  • 经常我们用到的方法就是vlookup函数和其他函数搭配使用,还有就是使用VBA代码进行自定义查找。今天我们就来讲一个99%的人都没有见过的一个函数,那就是textjoin函数怎么轻松实现数据的一对多查询。一、textjoin函数...
  • 有时我们需要在一张表格中,根据已知图片的名称,获取到另外一张表格中的图片,比如根据员工姓名,批量插入对应的照片。...但使用 VLOOKUP 发现获取的结果都是数字 0 ,很多人又不会用 VBA ,那该怎么实现这个功能呢 ?
  • 更内置了比Vlookup()函数更强大且好用的VlookupIn()函数。能对VBA宏程式能实现撤销与还原操作,防止鼠标误点功能与误操作。在EXCEL另存DBF功能的基础上还可以轻松实现对所有SQL数据库(*.DBF)文件进行加密或解密操作,...
  • 更内置了比Vlookup()函数更强大且好用的VlookupIn()函数。能对VBA宏程式能实现撤销与还原操作,防止鼠标误点功能与误操作。在EXCEL另存DBF功能的基础上还可以轻松实现对所有SQL数据库(*.DBF)文件进行加密或解密操作,...
  • 更内置了比Vlookup()函数更强大且好用的VlookupIn()函数。能对VBA宏程式能实现撤销与还原操作,防止鼠标误点功能与误操作。在EXCEL另存DBF功能的基础上还可以轻松实现对所有SQL数据库(*.DBF)文件进行加密或解密操作,...
  • 更内置了比Vlookup()函数更强大且好用的VlookupIn()函数。能对VBA宏程式实现撤销与还原操作,防止鼠标误点功能与误操作。由全球顶尖级水平微软MVP专家与财会管理信息团队历时多年开发,是与EXCEL用户与爱好者共同...
  • VLOOKUP函数实现向左查询 • 从生产配件编号中提取连续的数字编码 • 利用MATCH 函数提取连续数值 • 查询并汇总各产品销售额 • 利用MATCH函数汇总最后3 天的产品销售额 • 利用RANK函数实现按班级进行动态排名 ...
  • 任务20: vlookup函数 任务21: hlookup函数 任务22: indirect函数 任务23: index、match函数 任务24: 图表介绍 任务25: 简单数据透视表的制作 任务26: 切片器、日程表的添加 任务27: 多表创建透视表 任务28...
  • 8.3.1 VLOOKUP函数 8.3.2 HLOOKUP函数 8.3.3 LOOKUP函数 8.3.4 综合使用MATCH和INDEX函数 8.4 专业查找公式 8.4.1 精确查找 8.4.2 查找值的左侧 8.4.3 进行区分大小写的查找 8.4.4 在多个查找表中进行...
  • 8.3.1 VLOOKUP函数 8.3.2 HLOOKUP函数 8.3.3 LOOKUP函数 8.3.4 综合使用MATCH和INDEX函数 8.4 专业查找公式 8.4.1 精确查找 8.4.2 查找值的左侧 8.4.3 进行区分大小写的查找 8.4.4 在多个查找表中进行...

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

vba实现vlookup功能