|
楼主 |
发表于 2016-4-22 16:46
|
显示全部楼层
本帖最后由 August295 于 2016-4-22 16:59 编辑
代码来源EXCELHOME论坛
fxl447098457提供
效率很高,
小遗憾,就是不能查空,查空报错。
看不懂有高手能帮忙给注释一下,大家学习学习
Sub myquery()
Dim arr, brr, crr1(1 To 500, 1 To 1), crr2(), i&, j&, k&, n%, p%
arr = Range("A2:D" & Cells(Rows.Count, 1).End(3).Row)
brr = Range("G2:G" & Cells(Rows.Count, 7).End(3).Row)
For j = 1 To UBound(brr, 1)
For i = 1 To UBound(arr, 1)
If brr(j, 1) = arr(i, 3) Then
n = n + 1
k = k + 1
ReDim Preserve crr2(1 To 4, 1 To k)
crr2(1, k) = arr(i, 1): crr2(2, k) = arr(i, 2)
crr2(3, k) = arr(i, 3): crr2(4, k) = arr(i, 4)
End If
Next i
If n = 0 Then p = p + 1: crr1(p, 1) = brr(j, 1)
n = 0
Next j
Intersect(Range("I:I,L:O"), UsedRange).ClearContents
[I1] = "不在查询范围内": [L1:O1] = [{"序号","班级","姓名","数量"}]
[I2].Resize(500) = crr1
[L2].Resize(k, 4) = WorksheetFunction.Transpose(crr2)
MsgBox "查询完毕!"
End Sub
|
|