Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
652to656
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
652to656
652to656
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zellen mit Werten nach oben verschieben

Zellen mit Werten nach oben verschieben
15.08.2005 02:43:06
blizzky
Hallo,
Folgendes Problem: Ich habe eine lange Spalte (ca 1800 Zeilen), in der sich mehrere leere Zellen befinden und nur einiege mit Werten.
Ich möchte erreichen, dass die leeren Zellen gelöscht werden und die mit den Werten sich nach oben verschieben.
Hab folgendes probiert:
dim r as range
set range("bereich")
dim i as integer
for i = 1 to r.rows.count
if r(i,1) = 0 then
r(i,1).delete
else
end if
next i
Es dauert aber ewig und ich muss das Makro mind 6-7 ausführen, bis alle Einträge "oben" sind.
Was ist falsch?

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen mit Werten nach oben verschieben
15.08.2005 02:46:43
MartinP2
Hallo,
Warum machst du es nicht über Daten-Sortieren?
Grüße
Martin
AW: Zellen mit Werten nach oben verschieben
15.08.2005 03:01:34
blizzky
Hi,
Die Werte sollten ihre Reihenfolge nicht verlieren!
grüße
AW: Zellen mit Werten nach oben verschieben
15.08.2005 06:12:32
Hajo_Zi
Hallo Hans-Bärbel,
drehe Deine Schleife um lasse Sie von hinten nach vorne laufen, dann ist Problem 2 gelöst.
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


AW: Zellen mit Werten nach oben verschieben
15.08.2005 07:11:00
Erich
Hallo Stefan,
wenn häufiger mehrere leere Zellen untereinander vorkommen, gehts so schneller:

Sub LoeschenWenn()
Dim rg As Range, zz As Long, ru As Range
Set rg = Range("bereich")
For zz = rg.Rows.Count To 1 Step -1
If rg(zz, 1) = 0 Then
Set ru = rg(zz, 1)
Do While zz > 1 And rg(zz - 1, 1) = 0
zz = zz - 1
Set ru = Union(ru, rg(zz, 1))
Loop
ru.Delete xlShiftUp           ' wenn nur in Spalte 1 zu löschen ist
' ru.EntireRow.Delete xlShiftUp ' wenn ganze Zeilen zu löschen sind
End If
Next zz
End Sub

Die Idee, mit Unions zu arbeiten, habe ich aus einem Beitrag von Hajo Anfang August hier im Forum.
Das Makro löscht nicht nur leere Zellen, auch Zellen, in denen die Zahl 0 steht. Ist das beabsichtigt? Wenn nein, müsstest du noch r(i,1)=0 ersetzen durch isempty(r(i,1)) (kommt 2 mal vor).
i hattest du als integer, solte long sein (sonst gibts bei großen Zeilennummern Fehler).
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Zellen mit Werten nach oben verschieben
16.08.2005 01:38:29
Stefan
Hi Erich,
Du hast das Problem richtig erkannt- es sollen sowohl Zeilen ohne Werte als auch solche mit Nullen gelöscht werden.
Ich bin sicher das Makro funktioniert bestens, ich teste es wenn ich etwas freie Zeit habe. Ich bin schon zum nächsten Problem übergegangen...
Vielen Dank für deinen schnellen Einsatz!
Viele Grüße:
Stefan
AW: Zellen mit Werten nach oben verschieben
16.08.2005 02:04:43
Stefan
Jep,
funktioniert bestens!!
Thanks Erich!
Viele Grüße:
Stefan

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige