Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1544to1548
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

Spalten ab 2. Zeile ohne Inhalt ausblenden

Spalten ab 2. Zeile ohne Inhalt ausblenden
14.03.2017 10:28:30
Lesepeter
Hallo,
ich komme leider nicht weiter, deshalb wende ich mich an euch.
Ich würde gerne alle leeren Spalten einer Tabelle ausblenden.
Die Tabelle hat Überschriften in der ersten Zeile, d.h. es soll immer ab der 2. Zeile geprüft werden, ob die Spalte ab dort leer ist. Wenn ja, soll die komplette Spalte ausgeblendet werden.
Könnt Ihr mir weiterhelfen?
Danke schon mal im Voraus für eure Hilfe

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten ab 2. Zeile ohne Inhalt ausblenden
14.03.2017 13:16:09
Lesepeter
Danke funktioniert sehr gut!
Eine Frage habe ich allerdings noch:
In manchen Spalten (wieder ab der 2. Zeile) sind Leerzeichen vorhanden.
Kann man die Leerzeichen in diesen Spalten entweder entfernen oder diese ebenfalls ausblenden?
Zellen mit Leerzeichen sind leider nicht leer...
14.03.2017 13:30:08
Michael
Peter,
...d.h. im konkreten Fall zählen solche Zellen natürlich mit und die Spalten werden ggf. nicht ausgeblendet (weil eben Zellwerte [= Leerwerte] vorhanden sind).
Natürlich kannst Du prinzipiell Leerzeichen entfernen, indem Du auftretende Leerzeichen durch "Nichts" ersetzt (" " zu ""). Das geht ganz schnell mittels Suchen-und-Ersetzen (Strg + H). Es ist natürlich die Frage, wie Deine Daten grds. aussehen, denn mit der genannten Methode zerstörst Du Dir ggf. auch Textwerte, die auf das " " angewiesen sind, bspw.: "Lorem ipsum" zu "Loremipsum".
Da ich Deine Daten nicht kenne, kann ich dazu aber nichts sagen bzw. eine programmatische Vorgehensweise vorschlagen.
LG
Michael
Anzeige
AW: Zellen mit Leerzeichen sind leider nicht leer...
14.03.2017 14:13:00
Lesepeter
Die Funktion kenne ich. Allerdings würden, wie bereits vermutet, die alle anderen Daten zerstört werden.
Manuell funktioniert die Funktion "Suchen und Ersetzen" auch nicht, da zu viele Spalten vorhanden sind.
Könnte man eventuell den Reiter "Tabelle1" in "Tabelle2" kopieren,
in "Tabelle2" die Leerzeichen mit "Suchen und Ersetzen" entfernen,
dann die ausgeblendeten Spalten ermitteln
und zuletzt genau diese Spalten in Tabelle1 ausblenden?
Ist zwar etwas umständlich aber würde gehen, oder?
Warum einfach, wenn's kompliziert auch geht...
14.03.2017 15:24:34
Michael
Peter ;-)
Könnte man eventuell den Reiter "Tabelle1" in "Tabelle2" kopieren,
Ja, problemlos
in "Tabelle2" die Leerzeichen entfernen,
Ja, klar
dann die ausgeblendeten Spalten ermitteln und zuletzt genau diese Spalten in Tabelle1 ausblenden
Warum die Spalten ermitteln und in Blatt 1ausblenden? Wenn jetzt schon ein bereinigtes Blatt 2 vorliegt, warum blenden wir dann nicht dort gleich die Spalten entsprechend aus, ohne großes "Sammeln"...
Aber da Du meinen dezenten Hinweis zuvor nicht verstanden haben dürftest: Wenn Du mir ein Beispiel Deiner Tabelle, mit Dummy-Daten, aber von den Formaten, Strukturen etc. dem Original gleich, hier hochlädst, kann ich mir das ansehen und ggf. eine programmatische Vorgehensweise vorschlagen, die nicht umständlich ist...
Also: Bsp-Mappe mit Ausgangssituation und gewünschtem Ziel, alle Daten natürlich anonymisieren!
LG
Michael
Anzeige
Hmm...
14.03.2017 17:26:15
Michael
Hallo Peter,
...damit ist gar nicht soviel anzufangen, wie erhofft. Im Bsp. sind nur 5 Zellen falsch-leer (optisch leer, aber mit 2 bis 5 Leerzeichen gefüllt). Leider hast Du mir kein Muster angeboten, wie die Werte/Daten der gefüllten Zellen aussehen (nur "x") - somit kann ich leider keine Systematik ableiten, nach der die falsch-leeren Zellen bereinigt werden sollen/können. Nachdem Du schon gemeint hast, dass es zuviele Spalten betrifft, halte ich es nicht für sinnvoll alle Zellen des Gesamt-Bereichs abzuklappern und einzeln zu bereinigen; allerdings wüsste ich auch da noch keine Systematik.
Gibt's noch ein paar Infos von Deiner Seite? Ich bin evtl. aber heute schon weg, und morgen wieder im Forum.
LG
Michael
Anzeige
AW: Hmm...
15.03.2017 11:28:49
Lesepeter
Ich habe einige Inhalte in die Zellen eingefügt (das "x" und ein paar Leerzeichen). Als Kontrolle: In der letzten Spalte, in der ersten Zeile sind Leerzeichen.
Leider gibt es keine Systematik.
Gibt es eine Möglichkeit sich die ausgeblendeten Spalten per VBA ausgeben zu lassen und diese auf eine andere Tabelle zu übertragen?
Da wären wir zwar wieder beim komplizierten Lösungsweg, aber wenn es sonst keine Möglichkeit gibt...
Okay, dann...
15.03.2017 13:06:36
Michael
...so: https://www.herber.de/bbs/user/112204.xlsm
Das ist wieder Deine Bsp-Datei, starte einfach Makro "a" (im allg. Modul 1). Hast Du es Dir so vorgestellt?
Was mit den zwischengespeicherten Daten im Blatt 2 passieren soll, hast Du nicht angegeben; notfalls müsstest Du jetzt Blatt 2 manuell löschen.
Hier der Code nochmals separat:
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim WsQ As Worksheet: Set WsQ = Wb.Worksheets("Tabelle1")
Dim WsZ As Worksheet: Set WsZ = Wb.Worksheets("Tabelle2")
Dim r As Range, i&, Sp$, a
Application.ScreenUpdating = False
With WsQ
.UsedRange.Copy WsZ.Range("A1")
Application.CutCopyMode = False
End With
With WsZ
.UsedRange.Replace what:=" ", replacement:="", lookat:=xlPart
Set r = .Range(.Cells(1, 1), .Cells(1, 1).End(xlToRight))
For i = 1 To r.Cells.Count
If WorksheetFunction.CountA(.Range(.Cells(1, i), _
.Cells(.Rows.Count, i))) 
Gib Bescheid!
LG
Michael
Anzeige
AW: Okay, dann...
15.03.2017 15:17:43
Lesepeter
Danke für deine Antwort!
Im Beispiel funktioniert es sehr gut.
Weißt du eventuell noch wie man das auf andere Tabellen übertragen kann - unabhängig vom Reiternamen "Tabelle1"?
Bei "Tabelle2" handelt es sich nur um eine Hilfstabelle, das heißt hier wäre es egal.
Na bitte, fast geschafft...
15.03.2017 15:57:06
Michael
Hallo!
Weißt du eventuell noch wie man das auf andere Tabellen übertragen kann - unabhängig vom Reiternamen "Tabelle1"?
Klar. Du musst den entsprechenden Blattnamen nur hier anpassen...
Dim WsQ As Worksheet: Set WsQ = Wb.Worksheets("Tabelle1")
...also anstatt "Tabelle1" eben den gewünschten Blattnamen.
Oder Du passt die genannte Zeile so an
Dim WsQ As Worksheet: Set WsQ = Wb.ActiveSheet
...dann bezieht sich das ganze auf das gerade aktive Blatt.
Bei "Tabelle2" handelt es sich nur um eine Hilfstabelle, das heißt hier wäre es egal.
Auch hier kannst Du, nach obigem Schema, natürlich genauso anpassen. Achtung: Die Blätter müssen aber bereits existieren, mein Code prüft das nicht und legt die Blätter daher nicht automatisch an.
LG
Michael
Anzeige
AW: Na bitte, fast geschafft...
16.03.2017 15:36:07
Lesepeter
Super jetzt geht es!
Vielen Dank für die Hilfe Michael!

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige