G'day,
Вы можете рассмотреть возможность использования словаря для отслеживания адреса любой объединенной области, которую вы уже насчитали. Это будет означать, что объединенные области могут охватывать несколько строк и все равно будут учитываться только один раз. Это хороший сайт, который описывает использование словарного объекта. Вы должны добавить «Среду выполнения сценариев Microsoft» в качестве ссылки.
Попробуйте что-то вроде этого:
Dim wks As Worksheet
Dim rng As Range
Dim c As Range
Dim i As Integer
Dim mergedAreaAddressBook As New Scripting.Dictionary
i = 0
Set wks = Worksheets("Sheet1")
Set rng = wks.Range("A1:H6")
'For each cell in the range
For Each c In rng
'If the adress of the merged area is not on your dictionary
If Not mergedAreaAddressBook.Exists(c.MergeArea.Address) Then
'Increment the counter
i = i + 1
'Add the cell address to your address book
mergedAreaAddressBook.Add c.MergeArea.Address, c.MergeArea.Address
End If
Next c
Для диапазона, который выглядит как this , значение i будет 34, когда подпрограмма заканчивается.
Вероятно, есть более простой способ сделать это, но это все, о чем я могу думать прямо сейчас!
Удачи в решении, надеюсь, это немного поможет.