|
本帖最后由 flybighzd 于 2019-12-12 17:24 编辑
附件如下
本人属于学了三章书就开始写代码的半吊子,所以问题大概比较初级
我的目的是把sheet数据库中通过日期和名字筛选第五列数据,即排班类型,填入sheet临检 or 生化排班表的对应位置上
如果用vlookup可以做但是还是想学学用VBA怎么做出来
大概知道应该用字典匹配的方法,不过没有看到这个算法比较好的教程,自己摸索下也没有得到合适的结果,希望论坛内的大佬不吝赐教,最好有示例代码加简单的注释
叩首感激!
12,12更新渣代码和文件,忘大佬们指正
Sub DicFind()
Dim d As Object, arr, brr
Set d = CreateObject("scripting.dictionary")
arr = Sheets("数据库").[a1].CurrentRegion
'以数据库建立字典,key为"名字&时间",d(s)值为岗位安排
For i = 2 To UBound(arr)
For j = 2 To UBound(arr, 2)
s = arr(i, 1) & "&" & arr(j, 4)
d(s) = arr(i, 5)
Next
Next
'建立新的brr数组
brr = Sheets("临检晚夜班表").[a1].CurrentRegion
'建立s为新的brr key库,key为临检晚夜班表“名字&时间"
For i = 3 To UBound(brr)
For j = 2 To UBound(brr, 2)
s = brr(i, 1) & "&" & brr(1, j)
'建立m,k两轴焦点,如果s存在于d中,则m,k的值为d(s)的值
For k = 2 To UBound(brr, 2)
For m = 3 To UBound(brr)
If d.exists(s) Then
brr(m, k) = d(s)
Else
brr(m, k) = ""
End If
Next
Next
Next
Next
Set d = Nothing
End Sub
|
|