|
楼主 |
发表于 2015-4-22 22:11
|
显示全部楼层
两位的解决方案都很完美,只是我水平实在差看不懂啊
先来看看雪舞子 的答案,能帮忙补齐每一句的意思吗?
Sub test()
Dim arr, brr(), i%, j%, k%, rng As Range
'定义arr,brr动态数组,i%,j%,k%,rng为单元格,在字母后面为什么要拖一个百分比?
arr = [a1].CurrentRegion
'arr为sheet1中以a1单元格展开的边界区域(currentregion指的是以某点向周围空白处扩散的区域?)
ReDim brr(1 To UBound(arr), 1 To 1)
'重新定义brr为第一行至最后一行,a列的单元格
For i = 1 To UBound(arr)
'这个i和最上面的i%是同一个i吗?
Set rng = Sheet2.Columns(1).Find(Left(arr(i, 1), 2), , , xlWhole)
'用sheet2的第一列同sheet1中第一列单元格中从左数开始的2个字节做完全匹配
If Not rng Is Nothing Then
'如果存在满足上述匹配条件的单元格则
For j = 1 To 3
If Right(arr(i, 1), 3) = rng(j, 2) Then Exit For
'上面什么意思?
Next
If j < 4 Then
For k = 3 To 5
If Mid(arr(i, 2), 2, 2) = rng(0, k) Then Exit For
Next
If k < 6 Then
brr(i, 1) = rng(j, k).Value
End If
End If
End If
Next
[c1].Resize(UBound(brr)) = brr
End Sub |
|