Подсчитать смесь клеток и слитых клеток - PullRequest
0 голосов
/ 29 июня 2018

У меня проблема с подсчетом ячеек слияния, так как код, который я использовал, считает каждую ячейку, включая те, которые объединены вместе. Прямо сейчас у меня есть формула для подсчета всех ячеек, включая ячейки, которые объединены, например, если я объединяю 6 ячеек вместе, я бы хотел, чтобы это считалось как 1, но это считается как 6. Есть ли способ подсчитать смесь как отдельных клеток, так и слитых клеток? Спасибо за помощь (:

Function ColorFunction(rColor As Range, rRange As Range, Optional SUM As Boolean)
Dim rCell As Range
Dim lCol As Long
Dim vResult
lCol = rColor.Interior.ColorIndex
For Each rCell In rRange
If rCell.Interior.ColorIndex = lCol Then
vResult = 1 + vResult
End If
Next rCell
ColorFunction = vResult
End Function

1 Ответ

0 голосов
/ 29 июня 2018

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, когда подпрограмма заканчивается.

Вероятно, есть более простой способ сделать это, но это все, о чем я могу думать прямо сейчас!

Удачи в решении, надеюсь, это немного поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...