So berechnen Sie die Summe der Zeilenhöhen für gefilterte Zeilen

So berechnen Sie die Summe der Zeilenhöhen für gefilterte Zeilen

Hintergrund: Ich habe ein Blatt, das Daten aus einer Datenbank zieht, um Produktbeschriftungen zu erstellen (mithilfe von Index-Match-Lookup-Formeln). Das Blatt enthält ein von mir aufgezeichnetes Makro, das die leeren Zeilen herausfiltert und die verbleibenden Zeilen automatisch anpasst. (Ich bin mit VBA nicht sehr vertraut, also entschuldigen Sie bitte meine Unwissenheit.)

Arbeitsblatt: Die Daten werden in zwei Spalten (B und C) und 25 Zeilen eingetragen. Ich brauche Hilfe bei der Erstellung eines Makros, das alle diese Aufgaben erledigt, sobald eine Produktnummer eingegeben wird; die leeren Zeilen herausfiltern und die verbleibenden Zeilen automatisch anpassen, die Zeilenhöhe für jede der verbleibenden Zeilen messen und die Gesamtsumme der anzuzeigenden Zeilenhöhen ermitteln (vorzugsweise in Zelle B2). (z. B. „Zeilenhöhen: 64“)

Wir sind für jede Hilfe dankbar und danken Ihnen im Voraus!

Antwort1

Mit gefilterten Daten wie:

Bildbeschreibung hier eingeben

Code wie:

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

Gibt Ihnen die Anzahl der sichtbaren Zeilen und die Gesamthöhe dieser Zeilen an.

NOTIZ:

Die Einheit der Höhe ist aPunkt, wobei jeder Punkt 0,013888889 Zoll beträgt(bei 100 % Zoom). Dies setzt voraus, dass Sie den Jumbotron nicht als Monitor verwenden.

Antwort2

Um die Höhe/Anzahl schnell und einfach in einer Variablen zu erhalten, geben Sie einfach Folgendes in Ihr Modul ein:

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

Geben Sie dann einfach in die Zelle die Anzahl und Höhe ein, deren Ausgabe Sie abrufen möchten =getCount(B4:B25)&" "&getHeight(B2:B25)/96. Bedenken Sie jedoch, dass sich die ppi mit Ihren Einstellungen, der Auflösung und der Größe des Monitors ändern (Sie müssen daher möglicherweise die tatsächlichen ppi ermitteln und die ändern /96, aber dafür gibt es unzählige schnelle Möglichkeiten. Schauen Sie einfach hier nach oder verwenden Sie Google).

Für die Einstellung des Filters und der automatischen Höhe ist das einfache „Makro aufzeichnen“ ein perfekter Anfang, jetzt müssen Sie den Filter variabel einstellen. Um den variablen Filter zu erhalten, zeichnen Sie ihn einfach auf, während Sie ihn ändern, und ersetzen Sie dann den Filterwert durch Range("A1").Value(ändern Sie A1 in die Zelle, die Sie als Filter verwenden möchten).

Wenn Sie dabei immer noch auf Probleme stoßen, fragen Sie einfach bei StackOverflow nach (aber Sie müssen den Code zeigen, den Sie bereits haben, sonst werden sie möglicherweise sauer) :P

verwandte Informationen