
'合并单元格只能是4边形,按这图形来处理的
Option Explicit
Sub abc()
Dim a, i, j, k, m, r, c, d, s
a = [a1].Resize(10, 6)
Set d = CreateObject("scripting.dictionary")
ReDim b(1 To UBound(a) * UBound(a, 2), 1 To 2)
For i = 2 To UBound(a)
For j = 2 To UBound(a, 2)
If Len(a(i, j)) Then m = m + 1: b(m, 1) = i: b(m, 2) = j
Next
Next
For i = 1 To m
r = Cells(b(i, 1), b(i, 2)).MergeArea.Rows.Count
For j = b(i, 1) To b(i, 1) + r - 1
c = Cells(b(i, 1), b(i, 2)).MergeArea.Columns.Count
For k = b(i, 2) To b(i, 2) + c - 1
a(j, k) = a(b(i, 1), b(i, 2))
d((j - 1) & "-" & (k - 1)) = a(b(i, 1), b(i, 2))
Next
Next
Next
s = [h2].Value & "-" & [i2].Value
[j2] = IIf(d.exists(s), d(s), vbNullString)
End Sub