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

Zeilen ohne Nullwerte ausgeben

Zeilen ohne Nullwerte ausgeben
26.01.2016 17:35:52
Stefan
Hallo Forum,
ein recht banales Thema beschäftigt mich (mit Unterbrechungen) den ganzen Tag. Ich komme nicht hin.
To Do:
Ich möchte aus einer Liste mit Terminen ("Termin"B6:D106) alle Termine mit Datum heute oder älter (=überfällige) in Tabelle T.Ex auflisten. Aus der "Termine" Tabelle sollen dabei in T.Ex beginnend ab A1 abgebildet werden:
"Termin" Spalte B: Name
"Termine" Spalte C: Schlagwort Termin
"Termine" Spalte D: genaue Beschreibung
"Termine" Spalte E: Fälligkeitstag Termin
Erklärungen:
In "Termine" Spalte G steht ein Prüfkriterium (0=ok, 1=überfällig). Wenn 1, dann soll Zeile nach T.Ex gehen.
Die Termine sind bunt gewürfelt, also nicht alle überfälligen oben und alle übrigen unten. Es kann Prüfzeilen geben, die einen Nullwert haben, der soll nicht übernommen werden.
Arry Formeln harmonieren nich mit wenn Prüfkriterium 1, dann kopieren. Die in diversen Foren gehandelten VBA Makros zu "Kopieren ohne Nullwerte" kann ich mangeels Know How nicht umschreiben, da ich ja 3 Zellen je Zeile (Schlagwort, genaue Beschreibung, Fälligkeit) kopieren muss.
Falls jemand eine schöne Idee hat, ist mir diese sehr willkommen. Ich bin wieder ab morgen früh im Netz.
Danke schon mal
Stefan

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen ohne Nullwerte ausgeben
26.01.2016 17:40:02
Stefan
Korrektur: Es sollen 4 Zellen je übernommen werden: Name, Schlagwort, genaue Beschreibung, Fälligkeit

AW: Zeilen ohne Nullwerte ausgeben
26.01.2016 20:16:42
Michael
Hi Stefan,
der simpelste Weg ist, die komplette Tabelle zu kopieren und im Zielblatt mindestens nach Spalte G (und nach Wunsch weiteren Spalten) zu sortieren - wenn Du nach absteigenden Werten sortierst, hast Du die 1er oben und die 0en unten, wo Du sie in einem Rutsch rauslöschen kannst, wenn Du willst.
Das ist mit ein paar Handgriffen erledigt und kann im Prinzip auch mit dem Rekorder aufgezeichnet werden.
Na gut, händisch nachbearbeitet dann:
Sub Machen()
Dim c As Range
Termine.Range("A1").CurrentRegion.Copy
TEx.Range("A1").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
TEx.Range("A1").CurrentRegion.Sort _
Key1:=TEx.Range("G1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Set c = TEx.Range("G:G").Find(What:="0")
If c Is Nothing Then Exit Sub
TEx.Rows(c.Row & ":" & TEx.Range("A1").CurrentRegion.Rows.Count).Delete
TEx.Columns("A").Delete
' so dann auch auf Wunsch weitere Spalten
End Sub
Als Datei: https://www.herber.de/bbs/user/103061.xls
Schöne Grüße,
Michael

Anzeige
AW: Zeilen ohne Nullwerte ausgeben
27.01.2016 11:14:52
Stefan
Hallo Michael,
er kommt noch nicht mit TEx.Range..... klar. Hier landet er immer im Debugger. Müsste man TEx noch irgendwie definieren, weil TEx noch nicht als Worksheet erkannt wird?
Ansonsten sehr elegante Idee.
Gruß
Stefan

AW: Zeilen ohne Nullwerte ausgeben
27.01.2016 11:15:16
Stefan
Hallo Michael,
er kommt noch nicht mit TEx.Range..... klar. Hier landet er immer im Debugger. Müsste man TEx noch irgendwie definieren, weil TEx noch nicht als Worksheet erkannt wird?
Ansonsten sehr elegante Idee.
Gruß
Stefan

AW: Zeilen ohne Nullwerte ausgeben
27.01.2016 11:16:09
Stefan
Hallo Michael,
er kommt noch nicht mit TEx.Range..... klar. Hier landet er immer im Debugger. Müsste man TEx noch irgendwie definieren, weil TEx noch nicht als Worksheet erkannt wird?
Ansonsten sehr elegante Idee.
Gruß
Stefan

Anzeige
AW: Zeilen ohne Nullwerte ausgeben
27.01.2016 11:16:18
Stefan
Hallo Michael,
er kommt noch nicht mit TEx.Range..... klar. Hier landet er immer im Debugger. Müsste man TEx noch irgendwie definieren, weil TEx noch nicht als Worksheet erkannt wird?
Ansonsten sehr elegante Idee.
Gruß
Stefan

kleiner Handgriff
27.01.2016 12:00:30
Michael
Hi Stefan,
im VB-Editor kannst Du mit F4 oder unter Ansicht das Eigenschafts-Fenster einblenden lassen und dort direkt den Namen des Blattes eingeben:
Userbild
In Klammern steht der Name, den Du in der normalen Excel-Ansicht eingegeben hast und links daneben der, den Du als Name-Eigenschaft vergeben kannst - vorher war das Tabelle1 oder so.
Dadurch kann man auf das Blatt "direkt" zugreifen ohne die Schreibarbeit á la sheets("blabla").
Hat Vor- und Nachteile, soll heißen, Du mußt Dir nicht auf Biegen und Brechen angewöhnen, das immer so zu machen.
Schöne Grüße,
Michael

Anzeige
AW: kleiner Handgriff
27.01.2016 14:01:35
Stefan
Hallo Michael,
ich bekomme für die nachstehende Passage eine Fehlermeldeung "Laufzeitfehler '1004' Sortierbezug ungültig ....
Leider ist das auch der Teil, den ich hirnlos hinnehme, da ich ihn kaum verstehe. Schreibfehler/ Typos sind absolut ausgeschlossen.
TEx.Range("A1").CurrentRegion.Sort _
Key1:=TEx.Range("G1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Stefan

könnte am CurrentRegion liegen
27.01.2016 15:51:20
Michael
Hi Stefan,
man sollte einfach keine Makros ohne Beispieldatei schreiben...
Range("A1").CurrentRegion ist der Bereich, der mit der Zelle A1 "zusammenhängt". Wenn die Zellen um A1 herum leer sind, funktioniert das so nicht.
Ersetze das "A1" mal durch "G1" - G1 muß ja schließlich vorhanden sein.
Aaaaber: wenn zwischen Deinen Daten in B-D und der Spalte G eine leere Spalte ist, haut das auch nicht hin...
Sag, meine Beispieldatei geht aber?
Also, auf ein Neues:
Sub machen()
Dim c As Range
Dim bis As Long
' hier wird ermittelt, wo der unterste Wert steht
' falls Spalte "C" oder "D" "länger" sind, ersetzt Du "B"
bis = Termine.Range("B" & Rows.Count).End(xlUp).Row
Termine.Range("A1:G" & bis).Copy
TEx.Range("A1").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
TEx.Range("A1:G" & bis).Sort _
Key1:=TEx.Range("G1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Set c = TEx.Range("G:G").Find(What:="0")
If c Is Nothing Then Exit Sub
TEx.Rows(c.Row & ":" & bis).Delete
TEx.Columns("A").Delete
' so dann auch auf Wunsch weitere Spalten
End Sub
Datei: https://www.herber.de/bbs/user/103084.xls
Schöne Grüße,
Michael

Anzeige
AW: könnte am CurrentRegion liegen
27.01.2016 16:45:00
Stefan
DANKE!!!!

dann bin ich ja beruhigt, Gruß owT
28.01.2016 14:58:08
Michael

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige