Anzeige
Archiv - Navigation
1324to1328
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hidden Rows effizient ermitteln

Hidden Rows effizient ermitteln
18.08.2013 09:21:25
Sebastian
Hallo,
Gibt es eine Möglichkeit die versteckte Zeilen oder Spalten aus einer Auswahl(UsedRange.Rows) effizient zu ermitteln. Zum Beispiel mit der Find Methode?
Im Moment ist die Lösung in einer Schleife danach zu filtern aber diese Lösung verursacht grosse Performance Probleme. Das muss doch einfacher gehen? Ich finde nur im Internet keine guten Ansätze. Kennt sich da jemand von euch aus?
xlThanks
Sebastian

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hidden Rows effizient ermitteln
18.08.2013 10:30:38
ransi
HAllo
Im Moment ist die Lösung in einer Schleife danach zu filtern aber diese Lösung verursacht grosse Performance Probleme.
Zeigst du uns mal die Schleife ?
rans

AW: Hidden Rows effizient ermitteln
18.08.2013 10:38:18
Sebastian
Na klar, gerne.
For Each r As Range In sheet.UsedRange
If r.Hidden = False then
' zur auflistung hinzufügen
End If
Next

AW: Hidden Rows effizient ermitteln
18.08.2013 10:40:04
Hajo_Zi
Du prüft jede Zeilen und Spalte mehrmals, da eine Zeile 35 Spalten hat. Du solltest Zeilen und Spalten separat prüfen.
Gruß Hajo

AW: Hidden Rows effizient ermitteln
18.08.2013 10:42:39
ransi
HAllo
' zur auflistung hinzufügen
Wie du das machst wollte ich eigentlich wissen ;-)
ransi

Anzeige
AW: Hidden Rows effizient ermitteln
18.08.2013 10:51:12
Sebastian
hallo ransi,
Mit einer einfachen Collection. Add(r) und gut :o
Anhand der Antworten scheint es dafür keine einfache Lösung zu geben.
Das Performance Problem liegt sicher nicht an der Collection sondern an der Grösse der Range.
Erstaunlich das Excel an so einem Problem scheinbar scheitert.
Hätte ich nicht gedacht!
Sebastian

AW: Hidden Rows effizient ermitteln
18.08.2013 11:00:38
ransi
Hallo Sebastian
100000 Datensätze in A2:I100000
550000 Zeilen und 5 Spalten ausgeblendet.
Tabelle1

 ACEG
152121857
276561719
563805916
68672915
7789910098
878957292
994371003
115799892


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Sub machs()
    Dim myDicZeilen As Object
    Dim mydicSpalten As Object
    Dim bereich As Range
    Dim dblTimer As Double
    Dim L As Long
    dblTimer = Timer
    Set myDicZeilen = CreateObject("Scripting.Dictionary")
    Set mydicSpalten = CreateObject("Scripting.Dictionary")
    Set bereich = Range("A1").CurrentRegion
    
    For L = 1 To bereich.Rows.Count
        If bereich.Rows(L).Height = 0 Then
            myDicZeilen(bereich.Rows(L).Row) = 0
        End If
    Next
    
    For L = 1 To bereich.Columns.Count
        If bereich.Columns(L).Width = 0 Then
            mydicSpalten(bereich.Columns(L).Column) = 0
        End If
    Next
    MsgBox "Dauer: " & vbCrLf & Timer - dblTimer
    MsgBox "Ausgeblendete Zeilen:" & vbCrLf & vbCrLf & Join(myDicZeilen.keys, "; ")
    MsgBox "Ausgeblendete Spalten:" & vbCrLf & vbCrLf & Join(mydicSpalten.keys, "; ")
End Sub


1,6 sekunden...
Da ist aber noch Potential drin.
ransi

Anzeige
AW: Hidden Rows effizient ermitteln
18.08.2013 11:16:36
Sebastian
Ich möchte keine externen COM Komponenten ansprechen. Das ist das gleiche Problem in grün.
Der Trick scheint einfach auf die Höhe 0 zu prüfen. Das ist ein ziemlich cooler Trick. Wenn mir eine Excel Funktion dabei helfen kann das in einem Ausdruck auszuwerten wäre das cool. Den Code könnte man auch ohne Scripting.Dictionary laufen lassen. Ich muss wirklich die Schleife vermeiden(das eigentliche Problem habe ich simplifiziert) da diese zuviel Aufwand kostet da sie teilweise noch nicht mal in VBA läuft sondern prozess-extern in C# oder C++. Ich habe das bisher nicht zur Sprache gebracht weil ich dachte das spielt keine Rolle. Ich wolle damit niemand hinters Licht führen sondern das Problem vereinfachen da ich dachte Excel kann das bestimmt locker. Scheinbar ist das nicht so :/
*Sebastian

Anzeige
AW: Hidden Rows effizient ermitteln
18.08.2013 12:04:50
ransi
HAllo Sebastia

Wenn mir eine Excel Funktion dabei helfen kann das in einem Ausdruck auszuwerten..

Wie meinst du das ?
Die ganzen Zeilen bzw. Spalten in einer Range zusammefssen ?
So wie zb. dim ausgeblendete as range Set ausgeblendete=Tabelle1.cells.specialcells(xlcelltypeuausgeblendet) msgbox ausgeblendete.address C# oder C++ haben doch mit Sicherheit auch eine Dictionary Klasse oder ArrayList oder sowas implementiert.
ransi

AW: Hidden Rows effizient ermitteln
18.08.2013 10:44:09
Sebastian
Na klar, gerne.
For Each r As Range In sheet.UsedRange
If r.Hidden = False then
' zur auflistung hinzufügen
End If
Next
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige