Spalten ein ausblenden
#1
Servus,

habe in den letzten Wochen in Excel eine Datenbank zur Terminverfolgung aufgebaut. derzeit ca. 3mb
Mein Problem das Ding wächst und wächst - beiliegend ein Bild

Um die Übersicht nicht zu verlieren benötige ich verschiedene Ansichten = spalten ein/ausblenden bzw. diverse Filter gesetzt

benutzerdefinierte Ansicht - wäre mein Favorit
da ich immer wieder zeilen löschen bzw. hinzufüge - klappt das mit der benutzerdefinierten Ansicht nicht immer
es kommt öfters die Fehlermeldung - Einige Ansichtseinstellungen können nicht angewendet werden
dann muss ich die benutzerdefinierte Ansicht überschreiben und es funktioniert wieder
die Ausführung der benutzerdefnierten Ansicht ist in Ordnung und liegt bei ca. 1,5sec

habe nun getestet per VBA Spalten bzw. Zeilen mit x ausblenden:
code funktioniert - siehe anbei
leider dauert es viel zu lange bei 1000Zeilen und Spalte WD - ca. 15sec

Private Sub CommandButton4_Click()
For Each zelle In Range("A1:WD1").Cells
    If zelle.Value = "x" Then
    zelle.EntireColumn.Hidden = True
    Else
    zelle.EntireColumn.Hidden = False
    End If
           
    Next
End Sub

Was wäre euer Tipp?


Angehängte Dateien Thumbnail(s)
   
Top
#2
Moin, mein erster Tipp: Erzähle mir, welches Excel so nette und unlesbare Bildchen auswerten kann ... -> Bilder statt Datei

Der zweite Tipp:

Code:
Option Explicit

Private Sub GMG()
  Dim c As Range, CalcSt
 
  On Error GoTo ErrorHandler
  With Application
     CalcSt = Application.Calculation
     .Calculation = xlCalculationManual
     .ScreenUpdating = False
  End With
  For Each c In Range("A1:WD1")
      c.EntireColumn.Hidden = (UCase(c) = "X")
  Next c
ErrorHandler:
  With Application
     .ScreenUpdating = True
     .Calculation = CalcSt
     .Calculate
  End With
End Sub

Das sollte so einiges bringen. Und ja, es geht mit beispielsweise Arrays wahrscheinlich noch schneller, aber ein Rumpf deiner Programmierung sollte doch erhalten bleiben Blush . Ach ja, hier ist es egal, on ein "x" oder ein "X" in der Zelle steht; VBA unterscheidet sonst nämlich Groß- und Kleinschreibung.

Hinweis: Die Zeile
Code:
CalcSt = Application.Calculation
habe ich auf ein sinnvolles Maß gekürzt (manchmal ist die Autovervollständigung im Editor zu hilfreich) :16:
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Top
#3
Hi,

dein Bild sagt nun mal überhaupt nichts aus. Das einzige, das ich daraus ersehen kann, ist, dass die Tabelle total überfrachtet zu sein scheint. Vllt. solltest du dir erst einmal Gedanken zu einem vernünftigen Aufbau machen. Dann kann eine intelligente Liste daraus gemacht werden, in der du nach Herzenlust- und laune filtern und sortieren kannst.

Wieso müssen den überhaupt Zeilen gelöscht und wieder hinzugefügt werden. Auch das deutet für mich darauf hin, dass keinerlei vernünftige Struktur vorhanden ist.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#4
Servus Günther,

dein Code ist genial - du hast den Turbo gezündet.
Ich teste gleich noch weiter.
Top
#5
(10.03.2016, 15:20)WillWissen schrieb: Hi,

dein Bild sagt nun mal überhaupt nichts aus. Das einzige, das ich daraus ersehen kann, ist, dass die Tabelle total überfrachtet zu sein scheint. Vllt. solltest du dir erst einmal Gedanken zu einem vernünftigen Aufbau machen. Dann kann eine intelligente Liste daraus gemacht werden, in der du nach Herzenlust- und laune filtern und sortieren kannst.

Wieso müssen den überhaupt Zeilen gelöscht und wieder hinzugefügt werden. Auch das deutet für mich darauf hin, dass keinerlei vernünftige Struktur vorhanden ist.

einen Vernünftige Aufbau ist als unerfahrener Excel-User nicht so einfach - bin ja schon froh, dass ich all meine Vorgaben - Terminschiene, Meilensteine, Abteilungsressourcen, Stundenvorgaben, Projektinformation, in eine Tabelle
Übersichtlich untergebracht habe
Mir fehlt nur noch eine einfach reproduzierbare Übersicht für jede Abteilung und dies über Spalten bzw. Zeilen ausblenden oder filtern

löschen und wieder hinzufügen - das hast falsch verstanden - löschen meine ich - Zeile/Terminschiene wird nicht mehr benötigt - Datenmüll
                                                                                     - hinzufügen meine ich - neue Zeilen/neues Projekt kommen hinzu  

wenn du interessiert bist kann ich dir die Datei zukommen lassen und du zeigst mir wie du es machen würdest - leider sind sehr viel Firmeninterne Daten - dauert ein wenig bis ich die alle eliminiert habe
Top
#6
Hi,

Zitat:wenn du interessiert bist kann ich dir die Datei zukommen lassen und du zeigst mir wie du es machen würdest - leider sind sehr viel Firmeninterne Daten - dauert ein wenig bis ich die alle eliminiert habe

es wäre sicherlich für alle Helfer hilfreich. Du kannst sensible Daten einfach anonymisieren und du brauchst vor allem nicht die komplette Datei hochladen. Es reichen so 15-20 Datensätze.

Hier kannst du nachlesen, wie du die Datei ins Forum bringst: http://www.clever-excel-forum.de/Thread-...ng-stellen
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#7
Günther,

dein Code hat mich gerade um Lichtjahre nach vorne geschossen - danke nochmal

kannst du mir noch in den gleichen Code hinzufügen, das ausblenden von Zeilen mit "x" in Spalte A

dann baue ich mir eine Ansichtsmatrix ;)

beiliegend die derzeitigen Hilfszeilen für deinen Code für die verschieden Ansichten (verwende nur x,y übersichtshalber) - funktioniert schnell und einfach - genial


Angehängte Dateien Thumbnail(s)
   
Top
#8
Na ja, der Code ist recht ähnlich:


Code:
Sub ZeilenXAusbleneden()
  Dim c As Range, CalcSt
  Dim lRow As Long
 
  lRow = Cells(Rows.Count, 1).End(xlUp).Row
  On Error GoTo ErrorHandler
  With Application
     CalcSt = .Calculation
     .Calculation = xlCalculationManual
     .ScreenUpdating = False
  End With
  For Each c In Range("A1:A" & lRow)
      c.EntireRow.Hidden = (UCase(c) = "X")
  Next c
ErrorHandler:
  With Application
     .ScreenUpdating = True
     .Calculation = CalcSt
     .Calculate
  End With
End Sub
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Top
#9
Guten Morgen Günther,

Danke für den Code -> anstatt "X" setzte ich die bisher über Autofilter gesetzten Werte ein -> funktioniert wunderbar

Damit ich noch weiter nach Herzenlust :19:  verschiedene Ansichten erstellen kann.

wäre noch eine Kombination dieser Codes hilfreich:

1) Code - spalte ausblenden - ausblenden Zeile 1 alle mit x + ausblenden Zeile2 alle mit y + ausblenden Zeile3 alle mit z
2) Code - spalte ausblenden und zeilen ausblenden miteinander kombinieren

Danke für deine tolle Unterstützung.
Top
#10
Moin,

Schritt für Schritt mutiert das zu einer Komplettlösung, und das ist aus meiner Sicht nicht das Ziel eines Forums (Hilfe zur Selbsthilfe). Dafür gibt es genügend Freelancer, die von solchen Kleinaufträgen leben. Ich denke auch, dass du dich einmal mit PivotTables beschäftigen solltest. Das geht nämlich aus meiner Sicht sehr stark in diese Richtung.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste