Как рассчитать сумму высот строк для отфильтрованных строк

Как рассчитать сумму высот строк для отфильтрованных строк

Фон: У меня есть таблица, которая извлекает данные из базы данных для создания этикеток продуктов (используя формулы поиска соответствия индексу). На таблице есть записанный мной макрос, который отфильтровывает пустые строки и автоматически подгоняет оставшиеся строки. (Я не очень хорошо знаком с VBA, поэтому, пожалуйста, простите мое невежество)

Рабочий лист: Данные заполняются в двух столбцах (B и C) и 25 строках. Мне нужна помощь в создании макроса, который выполнит все эти задачи после ввода номера продукта; отфильтрует пустые строки и автоматически подгонит оставшиеся строки, измерит высоту каждой из оставшихся строк и получит общую сумму для отображения высот строк (предпочтительно в ячейке B2). (т. е. "Высота строк: 64")

Любая помощь приветствуется и заранее благодарна!

решение1

С отфильтрованными данными, такими как:

введите описание изображения здесь

Код типа:

Sub TotalHeight()
   Dim HowTall As Long
   Dim Kount As Long
   HowTall = 0
   Kount = 0

   For i = 2 To 25
      Set r = Cells(i, "A").EntireRow
      If Not r.Hidden Then
         HowTall = HowTall + r.RowHeight
         Kount = Kount + 1
      End If
   Next i

   MsgBox Kount & vbCrLf & HowTall
End Sub

Сообщит вам количество видимых рядов и общую высоту этих рядов.

ПРИМЕЧАНИЕ:

Единица высоты — этоточка, где каждая точка составляет 0,013888889 дюйма(при 100% увеличении). Это предполагает, что вы не используете джамботрон в качестве монитора.

решение2

Чтобы быстро и легко получить высоту/количество в переменной, просто вставьте свой модуль:

Public Function getHeight(rng As Range) As Long
  getHeight = rng.Height
End Function

Public Function getCount(rng As Range) As Long
  getCount = rng.SpecialCells(xlCellTypeVisible).Rows.Count
End Function

затем просто введите в ячейку, которую вы хотите вывести, =getCount(B4:B25)&" "&getHeight(B2:B25)/96чтобы получить количество и высоту... но имейте в виду, что ppi меняется в зависимости от ваших настроек, разрешения и размера монитора (поэтому вам может потребоваться получить реальное ppi и изменить /96, но есть масса быстрых способов сделать это... просто посмотрите здесь или используйте Google)

Для настройки фильтра и автовысоты просто "record macro" - это идеальное начало, теперь вам нужно установить фильтр в переменном виде. Чтобы получить переменный фильтр, просто записывайте, изменяя его, а затем замените filtervalue на Range("A1").Value(измените A1 на любую ячейку, которую вы хотите использовать в качестве фильтра)

Если у вас все еще возникнут проблемы, просто спросите на StackOverflow (но вам нужно показать код того, что у вас уже есть, иначе они могут разозлиться) :P

Связанный контент