用VBA字典实现查找两列数据

用VBA字典实现查找两列数据

使用for循环

以前两列为字典变量关键字

进行遍历

然后在后表再次根据关键字匹配,返回值

Sub 按钮3_Click()
    Application.ScreenUpdating = False
    Set d = CreateObject("scripting.dictionary")
    Set dd = CreateObject("scripting.dictionary")
    arr = [a1].CurrentRegion
    For j = 2 To UBound(arr)
        dd(arr(j, 1) & "##" & arr(j, 2)) = dd(arr(j, 1) & "##" & arr(j, 2)) + arr(j, 4)
        d(arr(j, 1) & "##" & arr(j, 2)) = d(arr(j, 1) & "##" & arr(j, 2)) + arr(j, 3)
    Next j
    arr = [f1].CurrentRegion
    
    For j = 2 To UBound(arr)
        arr(j, 3) = d(arr(j, 1) & "##" & arr(j, 2))
        arr(j, 4) = dd(arr(j, 1) & "##" & arr(j, 2))
    Next j
    [f1].CurrentRegion = arr
    Application.ScreenUpdating = True
End Sub

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-06-18
Private Sub CommandButton1_Click() '查询
Dim n As Long, m As Long, j As Long, k As Long
Dim t As String, s As String
n = Range("A1").End(xlDown).Row
m = Range("F1").End(xlDown).Row
For j = 2 To m
t = Cells(j, 6).Value
s = Cells(j, 7).Value
For k = 2 To n
If Cells(k, 1).Value = t And Cells(k, 2) = s Then
Cells(j, 8).Value = Cells(k, 3).Value
Cells(j, 9).Value = Cells(k, 4).Value
Exit For
End If
Next
Next

End Sub追问

一定要用字典和数组

本回答被网友采纳

用VBA字典实现查找两列数据
使用for循环 以前两列为字典变量关键字 进行遍历 然后在后表再次根据关键字匹配,返回值啊 Sub 按钮3_Click() Application.ScreenUpdating = False Set d = CreateObject("scripting.dictionary") Set dd = CreateObject("scripting.dictionary") arr = [a1].CurrentRegion For j = 2 T...

如何用vba找出两列不同的数据
先将一列数据读入数据,循环将数据作为字典的关键字添加字典项,再将另一列数据读入数组,再循环一次,比较这个数据是否已是字典已有的项,如果不是,说明这个数据在前面列不存在,如果是将这个关键字赋一个值(如1)。最后字典中没有赋值的项就是后一列没有的数据。本方法能双向对比找出一列在另一列...

VBA用两种方法找出两列数据相同项
Sub 数组法()Dim arr1, arr2, arr3()arr1 = Range("A1:A13")arr2 = Range("B1:B13")For i = 1 To UBound(arr1) For j = 1 To UBound(arr2) If arr1(i, 1) = arr2(j, 1) Then If InStr(Join(arr3, ","), arr1(i, 1)) = 0 Then n = n + 1 ...

用VBA字典数组汇总2列多列
Sub test()Dim arr1() '定义一个动态数组 Set d = CreateObject("scripting.dictionary")arr = Range("a1:b" & Range("a65535").End(xlUp).Row)For i = 1 To UBound(arr)If Not d.Exists(arr(i, 1)) Then n = n + 1 d(arr(i, 1)) = n ReDim Preserve arr1(1 To 2, ...

vba字典用法。 初学vba,一直不懂字典,想学习字典相关的。越详细越来好...
原VBA:For i& = 1 To UBound(ar)If d.Exists(ar(i, 1)) Then ar(i, 1) = d(ar(i, 1))Else ar(i, 1) = "0"End If Next 修改为:For i& = 1 To UBound(ar)v=ar(i,1)match_result="0"for each k in d.Keys if instr(v,k) then match_result=d(k)next k ar(...

EXCEL VBA字典一列对应多列的查询?
字典那句改为:d(Trim(Cells(i, "z"))) = Trim(Cells(i, "aa")) & "," & Trim(Cells(i, "ab"))即可

VBA用两种方法找出两列数据相同项
一种直接使用表格函数vlookup进行匹配 第二,可以使用字典进行匹配处理 第三,可以使用find函数进行查找匹配 第四,就是两层for循环直接进行匹配

excel中请用VBA提出两列数据中相同的数来。
亲,打开你的Excel文件,按“Alt+F11”打开VBA编辑窗口,然后在左侧对应的Sheet上双击,右侧空白处粘贴下面的代码。关闭VBA窗口。然后按“Alt+F8”打开宏窗口,选择刚插入的宏,点击“执行”。Sub cz()Dim f As Range: Dim i, n As Integern = 3357: Columns("D").NumberFormat = "@"For i ...

怎样用vba写字典查询
在VBA中,可以使用Scripting.Dictionary对象来实现字典查询功能。VBA本身并没有内置的字典数据类型,但是可以通过引用Windows Script Host Object Model来访问Dictionary对象,从而实现类似字典的功能。Dictionary对象允许用户存储键值对,并能够通过键来快速检索对应的值。以下是如何在VBA中使用Dictionary对象的步骤:...

在excel中,用VBA实现两列数据的比较
.Row If Not D.Exists(.Cells(i, 1).Value) Then index = index + 1 .Cells(index, 3) = .Cells(i, 1) End If Next End WithEnd Sub 用字典比较方便,省去重复的循环过程 如果数据量大,双层循环效率是很低的。

相似回答