Dim d, ar, br, cr, wb As Workbook Set d = CreateObject("Scripting.Dictionary") br = Worksheets("Sheet1").[A1].CurrentRegion '需要配置的数据表 ar = Worksheets("R").[A1].CurrentRegion '目标表 ReDim CRR(1 To UBound(br) - 1, 1 To 1) '配置表的循环列数 For I = 2 To UBound(ar) '从目标表需要关联的字段 d(ar(I, 4)) = ar(I, 6) For I = 2 To UBound(br) CRR(I - 1, 1) = d(br(I, 4)) '将CRR写到BRR表中 Worksheets("Sheet1").Range("EJ2").Resize(UBound(br), 1) = CRR '匹配 Dim arr, d As Object, CRR ' Set d = CreateObject("scripting.dictionary") arr = Worksheets("基础信息表").[a1].CurrentRegion brr = Worksheets("统计结果").[a1].CurrentRegion For i = 2 To UBound(arr) d(arr(i, 1)) = arr(i, 6) ReDim CRR(2 To UBound(brr), 1 To 1) '匹配目标表内容 For J = 2 To UBound(brr) CRR(J, 1) = d(brr(J, 2))'''在字典里查找BRR值并返回相应值 Worksheets("统计结果").[C2].Resize(UBound(CRR) - 1, 1) = CRR Set d = Nothing 方法三:多列 Dim arr, d As Object, CRR '数组brr用来存放求和数据 '创建字典 Set d = CreateObject("scripting.dictionary") '数组赋值 arr = Worksheets("基础信息表").[a1].CurrentRegion '重置数组brr大小 brr = Worksheets("统计结果").[a1].CurrentRegion For i = 2 To UBound(arr) d(arr(i, 1)) = arr(i, 6) & "," & arr(i, 7) ReDim CRR(2 To UBound(brr), 1 To 1) ReDim DRR(2 To UBound(brr), 1 To 1) For J = 2 To UBound(brr) If d(brr(J, 2)) <> "" Then CRR(J, 1) = Split(d(brr(J, 2)), ",")(0) '在BRR里查找到此名,并返回对应值 DRR(J, 1) = Split(d(brr(J, 2)), ",")(1) CRR(J, 1) = "" DRR(J, 1) = "" End If Worksheets("统计结果").[C2].Resize(UBound(CRR) - 1, 1) = CRR Worksheets("统计结果").[D2].Resize(UBound(CRR) - 1, 1) = DRR Set d = Nothing END SUB 资源名: VBA 实现Excel的 vlookup 函数功能程序源码.zip 资源类型:程序源代码 源码说明: 自己用vb写的一个程序,实现Excel的 vlookup 函数的功能,提供全部源码 适合人群:新手及有一定经验的开发人员 <br />Excel里有 Vlookup 函数,查找匹配数据非常方便,在 VBA 里,也可以用worksheetfunction. vlookup 方法来调用,今天我介绍一个另一种使用 字典 (dictionary)+数组的方法,速度也非常快。<br /> <br />数据源图片:<br /><br /> <br />代码:<br />Sub test() Dim data, temp, arr Dim d Dim i&, k& Set d = CreateObject("scri 今天聊一下 VBA 字典 的实际应用!如果你有 VBA 基础,可以看一下,没有基础的同学,就先进收藏夹!以后慢慢学习再看!我们都不是0基础的同学了,铺垫就不需要了,直接进进入实际案例吧!刚写的,热乎着……案例1 | 提取唯一值!原理解析: 利用 字典 Key的唯一性!我们把区域中的所有姓名全部加入到 字典 Key中,如果姓名已经存在 字典 中,就会使用后面的覆盖掉已有的!保证是唯一最新的记录!案例2 |实现V... 作工程报价,经常需要结合国家的定额来做报价单。根据定额的编号,很容易获得定额的价格,方便报价。以前做报价单的时候,都是用 VlookUP 函数来查找定额编号在反馈相应的价格。今天要讲的例子就是用 VBA 取代 Vlookup 函数。报价单往往都有很多行。快速的数据处理,用 VBA 明显会比 VlookUP 要快的多。问题如下:问题描述:1:根据定额工作表里面的定额编号,获取黄色单元格区域的内容;2:在报价单的工作里面... 学习中,遇到难题,遇到了函数的详细讲解,转载过来收藏,原文地址:http://hi.baidu.com/freewolf/item/5f5a1baaa3e61e716cd45599 LBound 函数: 返回一个 Long 型数据,其值为指定数组维可用的最小下标。 LBound(arrayname[, dimension]) 大量的 vlookup 会吃掉excel内存,导致文件变得很慢 下面提供一段 vba 的代码,让你在 vba 内部实行和 vlookup 完全一致的能力 因为使用的是在数组中比对数据的做法,计算速度会比在表内计算要提高数倍 在数据非常大量的情况下很适合使用 缺点是只能在 vba 内部使用,在外部不会留下函数,修改也只能在 vba 内部修改 以下是简单的代码外加注释说明 Function A_ Vlookup () Dim Lsr As Long, SHT 这一次我们通过 VBA 编程来实现类似 vLookup 的功能。当然,你可能要问,既然 vLookup 能搞定为什么还要用 VBA 再实现一遍。如果仅仅是使用 vLookup 这一单一功能当然没必要非得来个 VBA 编程,但如果你要实现的功能比较复杂就不再适合串联使用一大堆Excel公式了,这个时候用 VBA 编程会更容易,也不容易出错。 程序基本思路 我们要处理的Excel文件如上图所示。A列和B列分别是姓名和... For i = 4 To Range("A65536").End(xlUp).Row Sheets("当月").Cells(i, 3) = Application.WorksheetFunctio 这篇博客根据网友那里获取来的,不是本人亲写亲测。Null:Null是一个象Integer或者String一样的变量类型,它表示一个没有合法数据的变量。       这有别于zero、Nothing、Empty或者vbNullString。许多数值与Null结合在一起,都将产生Null结果。       比如:    表达式 结果 Null - Null Null Null + 7 7