yhd-ExcelVBA根据条件查找指定文件的数据填写到当前工作表指定列
【问题】当我们要用一个表的数据来查询另一个表的数据时,我们常常是打开文件复制数据源表的数据到当前文件新建一个数据表,再用伟大的VLookup,查询过来。再删除掉数据源,这样才完成。
【解决方法】个人感觉这样不够快,所以想了一下方法,设计出如下的东东
【功能与使用】
- 设置好要取“数据源”的文件路径
- data_key_col = "B" data_item_col = "V"为数据源的key列与item列
- this**是当前的数据表的要的东东
Sub getFiledata_to_activesheet()
Dim mydic As Object, obj As Object, main_sht As Worksheet
Dim Urng As Range
Dim arr, brr, temp_rr()
Set mydic = CreateObject("scripting.dictionary")
Application.ScreenUpdating = False
ti = Timer
'==========设定初始数据====================================、
file = "F:家Excel学习yhd-Excelyhd-Excel-VBAyhd-ExcelVBA根据条件查找指定文件的数据填写到当前工作表指定列201908工资变动名册表.xls"
file_sht = "工资变动名册"
data_key_col = "B"
data_item_col = "V" '===要取的数据的列
this_key_col = "C"
this_item_col = "AG" '===要输入的当前列
this_star_n = 5
this_end_n = 2468
' =========================================
Set obj = GetObject(file)
With obj.Worksheets(file_sht)
brr = .UsedRange.Value
For i = 1 To UBound(brr)
s = .Cells(i, data_key_col)
If s <> "" Then
mydic(s) = .Cells(i, data_item_col)
End If
Next i
End With
obj.Close False
Set obj = Nothing
With ActiveSheet
For i = this_star_n To this_end_n
s = .Cells(i, this_key_col)
If mydic.exists(s) Then
.Cells(i, this_item_col) = mydic(s)
Else
' .Cells(i, this_item_col) = "无"
End If
Next i
End With
Application.ScreenUpdating = True
MsgBox "完成!时间为:" & Format(Timer - ti, "0.000秒")
End Sub
完成时间,一个字“快”,比复制与vLookup快很多
====个人学习收藏用的====