PDA

Vollständige Version anzeigen : Spalteninhalte kürzen


NikoBach
28.03.2012, 13:50
Hallo,

ich habe insgesamt 4 Spalten in meinem Sheet. Dabei sind A, B und C gleich lang bzw. beinhalten gleich viele Zeilen. Die vierte Spalte D besitzt jedoch mehrere wenngleich diese nur mit Nullen gefüllt sind.

Habt ihr einen Tipp für mich wie ich mittels VBA in Excel die Spalte D in der Anzahl der Zeilen so beschneiden könnte, dass diese genauso viele Inhalte enthält wie die Spalten A bis C?

Danke vorab

mücke
28.03.2012, 14:18
Moin Niko,

es werden alle Einträge in Spalte D (bis zum letzten Eintrag in Spalte A) gelöscht.
Viel Erfolg!
Option Explicit
Sub NikoBach()

Range(Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 4), _
Cells(Cells(Rows.Count, 4).End(xlUp).Row, 4)).Clear

End Sub

NikoBach
29.03.2012, 07:04
Die Werte in Spalte D sollen ja soweit vorhanden bleiben wie es in den Spalten A bis C Werte gibt - irgendwie finde ich gerade den Kniff für das Anpassen leider nicht

mücke
29.03.2012, 07:16
Moin Niko,

...Die Werte in Spalte D sollen ja soweit vorhanden bleiben wie es in den Spalten A bis C Werte gibt ...genau das macht er ;)

hary
29.03.2012, 07:26
Hallo Niko
Der code von Dirk funzt doch.
vorher:

<b><em>Tabelle1</em></b><table border="1" cellspacing="0" cellpadding="0" style="border-color:#000000; border-width: 1px; font-size:11pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "><colgroup><col style="font-weight:bold; width:40px;" /><col style="width:97px;" /><col style="width:97px;" /><col style="width:97px;" /><col style="width:97px;" /></colgroup><tr style="background-color:#99CCFF; text-align:center; font-weight:bold; "><td>&nbsp;</td><td>A</td><td>B</td><td>C</td><td>D</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">1</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >0</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">2</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >0</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">3</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >0</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">4</td><td style="color:#000000; background-color:#FFFFFF; ">&nbsp; </td><td style="color:#000000; background-color:#FFFFFF; ">&nbsp; </td><td style="color:#000000; background-color:#FFFFFF; ">&nbsp; </td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >0</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">5</td><td style="color:#000000; background-color:#FFFFFF; ">&nbsp; </td><td style="color:#000000; background-color:#FFFFFF; ">&nbsp; </td><td style="color:#000000; background-color:#FFFFFF; ">&nbsp; </td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >0</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">6</td><td style="color:#000000; background-color:#FFFFFF; ">&nbsp; </td><td style="color:#000000; background-color:#FFFFFF; ">&nbsp; </td><td style="color:#000000; background-color:#FFFFFF; ">&nbsp; </td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >0</td></tr></table><br/><a href="http://c.excelhost.de/c_beverly/getfile.php?id=122" onclick="window.open(this.href);return false">Tabellendarstellung in Foren Version 5.30</a><br/><br/>
nachher:

<b><em>Tabelle1</em></b><table border="1" cellspacing="0" cellpadding="0" style="border-color:#000000; border-width: 1px; font-size:11pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "><colgroup><col style="font-weight:bold; width:40px;" /><col style="width:97px;" /><col style="width:97px;" /><col style="width:97px;" /><col style="width:97px;" /></colgroup><tr style="background-color:#99CCFF; text-align:center; font-weight:bold; "><td>&nbsp;</td><td>A</td><td>B</td><td>C</td><td>D</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">1</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >0</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">2</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >0</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">3</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >a</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >0</td></tr></table><br/><a href="http://c.excelhost.de/c_beverly/getfile.php?id=122" onclick="window.open(this.href);return false">Tabellendarstellung in Foren Version 5.30</a><br/><br/>
oder, was ich vermute Du hast Formeln im Bereich drin die als Ergebniss "" ausgeben.
dann versuch dies mal:
Sub niko2()
Dim Letzte As Long
Letzte = [=LOOKUP(2,1/(Tabelle1!A:A<>""),ROW(A:A))] 'Blattname anpassen
Range(Cells(Letzte + 1, 4), Cells(Cells(Rows.Count, 4).End(xlUp).Row, 4)).Clear
End Sub
gruss hary

NikoBach
29.03.2012, 12:28
Mh irgendwie mag mich mein Excel dann aber nicht. Der Code wird nicht verarbeitet - Gibts ne Alternativlösung? Irgendwie stehe ich da ziemlich auf dem Schlauch

hary
29.03.2012, 12:31
hallo Niko
edit: Hast Du evtl. verbunden zellen drin?
Lad mal eine Bsp.Mappe hoch mit Dummydaten.
gruss hary

NikoBach
29.03.2012, 14:47
So jetzt habe ich eine Lösung gefunden:

vonZeile = 2 ' die erste Zeile
bisZeile = 65536 ' letzte Zeile
Spalte = 1 ' Spalte A
For Zeile = bisZeile To vonZeile Step -1
If IsEmpty(Cells(Zeile, Spalte)) = True Then
Rows(Zeile).Delete Shift:=xlUp
End If
Next Zeile

Das Problem ist - er braucht ca. 30 Sekunden für 50 Zeilen
Kennt ihr eine Möglichkeit das in Sachen Speed zu optimieren

mücke
29.03.2012, 15:11
Moin Niko,

... oder Gruß gehört?! Anscheinend nicht und darum ist dies auch mein letzter Post zu diesem Thema!

Dein CODE durchläuft nicht 50 Zeilen sondern 65536 und löscht nicht nur die Einträge in Spalte D, sondern löscht die ganze Zeile!
Habe den CODE aus #2 angepasst.
Sub NikoBach()

Range(Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 4), _
Cells(Cells(Rows.Count, 4).End(xlUp).Row, 4)).Rows.Delete

End Sub