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