Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
792to796
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
792to796
792to796
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Doppelte Spalten löschen

Doppelte Spalten löschen
22.08.2006 10:47:01
Peter Schilling
hallo Excelfreunde
am 18.08.06 habe ich hier im Forum einen Code erhalten der mir in einer Eingabetabelle (Excel) die doppelten Spalten addiert und die mit "0" belegten Spalten löscht.
Dies Funktioniert auch ganz gut.
Jetzt ist es aber so, lösche ich einen Wert aus Zellen "F10 bis AM180" erhalte ich in "AN eine 0".
Das ist OK so, aber die Spalte mit "Nullwert" soll beim nächsten "Sortieren und Doubletten löschen" ja gelöscht werden.
Und dies Funkrioniert nicht.
Kann mir hierbei jemand die Lösung voegeben. (Am besten in dem Modul wo der Code hingehöhrt)
Ich habe keine Ahnung von Vba, es soll nur Funktionieren.
Für Hilfe währe ich dankbar.
Gruß Peter
https://www.herber.de/bbs/user/36012.xls

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelte Spalten löschen
22.08.2006 12:16:20
Heide_Tr
hallo Peter,
ich kenne Deinen Code vom August nicht, aber es hört sich doch so an, als wolltest Du nicht die Spalten, sondern die Zeilen löschen, bei denen AN gleich 0 ist?
in diesem Fall müsstest Du Deinem Code folgendes hinzufügen:
For Zeile = Range("AN65536").End(xlUp).Row To 1 Step -1
If Range("AN" & Zeile) = 0 And Len(Range("AN" & Zeile)) > 0 Then Rows (Zeile).Delete
Next Zeile
viele Grüße. Heide
AW: Doppelte Spalten löschen
22.08.2006 12:25:22
Peter Schilling
Hallo
ja natürlich, du hast recht.
Eine Zeile die in AN "0" hat soll beim "Sortieren und doubletten löschen" diese Zeile löschen.
Beim ersten mal funktioniert es ja, aber wenn ich im nachhinein etwas ändere nicht mehr.
Bitte sage oder zeige mir wo ich diesen Code einsetzen soll.
Ich habe keine ahnung wohin damit.
Gruß Peter
Anzeige
AW: Doppelte Spalten löschen
22.08.2006 16:53:29
Peter Schilling
hallo Excelfreunde
kann mir jemand helfen bei meinem Problem.
Der Code soll so abgeändert werden, dass das Modul richtig arbeitet.
Im 1ten Posting meinte ich Spalte und nicht Zeile.
Code im Modul 1 ist
Option Explicit

Sub DublettenZusammen()                               ' 19.08.2006 name des Erstellers
Dim zz As Long, ii As Long, cc As Integer
Makro34
ActiveSheet.Unprotect Password:="xyz"
For zz = 10 To Cells(Rows.Count, 2).End(xlUp).Row - 1
ii = 0
If Not IsEmpty(Cells(zz, 2)) Then
While Cells(zz, 2) = Cells(zz + ii + 1, 2)
ii = ii + 1
For cc = 6 To 39
If Not IsEmpty(Cells(zz + ii, cc)) Then
Cells(zz, cc) = Cells(zz, cc) + Cells(zz + ii, cc)
End If
Next cc
Cells(zz + ii, 2).ClearContents
Range(Cells(zz + ii, 6), Cells(zz + ii, 39)).ClearContents
Wend
End If
Next zz
Makro34
End Sub


Sub Makro34()
' Makro34 Makro
' Makro am 08.05.2006 von mein Name aufgezeichnet
' Tastenkombination: Strg+s
ActiveSheet.Unprotect Password:="xyz"
Range("B10:AM180").Sort Key1:=Range("B10"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveSheet.Protect Password:="xyz"
End Sub

Gruß Peter
Anzeige
Noch keine Lösung in Sicht??
22.08.2006 19:56:48
Peter Schilling
Hallo Excelfreunde
da sich bisher noch niemand gemeldet hat, habe ich hier nocheinmal ein Bespiel meines Wunsches hinterlegt.
Ist eine Zelle in AN = 0 soll die Db Nr. in dieser Zeile mittels Vba Code gelöscht werden.
Falls jemand eine Lösung hat, bitte genau beschreiben wo dieser Code hin soll.
https://www.herber.de/bbs/user/36054.xls
Wer kann mir hier weiterhelfen.
Gruß Peter
AW: Noch keine Lösung in Sicht??
23.08.2006 07:02:44
Heide_Tr
hallo Peter,
den o.g. Code kopierst Du in das Makro DubletteZusammen hinter den Aufruf von Makro 34, also ganz ans Ende.
viele Grüße. Heide
Anzeige
AW: Noch keine Lösung in Sicht??
23.08.2006 10:17:53
Peter Schilling
Hallo Excelfreund/in
ich habe es so gemacht wie du gesagt hast.
Aber das scheint nicht zu funktionieren.
Beim Ausführen kommt die Meldung "Fehler beim Kompilieren Variable nicht definiert"
und zwar >For Zeile = Range< Zeile ist blau Invertiert.
Kannst du weiterhelfen.
Gruß Peter
Hier der Code wie er eingetragen ist:
Option Explicit

Sub DublettenZusammen()                               ' 19.08.2006 name des Erstellers
Dim zz As Long, ii As Long, cc As Integer
Makro34
ActiveSheet.Unprotect Password:="xyz"
For zz = 10 To Cells(Rows.Count, 2).End(xlUp).Row - 1
ii = 0
If Not IsEmpty(Cells(zz, 2)) Then
While Cells(zz, 2) = Cells(zz + ii + 1, 2)
ii = ii + 1
For cc = 6 To 39
If Not IsEmpty(Cells(zz + ii, cc)) Then
Cells(zz, cc) = Cells(zz, cc) + Cells(zz + ii, cc)
End If
Next cc
Cells(zz + ii, 2).ClearContents
Range(Cells(zz + ii, 6), Cells(zz + ii, 39)).ClearContents
Wend
End If
Next zz
Makro34
For Zeile = Range("AN65536").End(xlUp).Row To 1 Step -1
If Range("AN" & Zeile) = 0 And Len(Range("AN" & Zeile)) > 0 Then Rows(Zeile).Delete
Next Zeile
End Sub


Sub Makro34()
' Makro34 Makro
' Makro am 08.05.2006 von mein Name aufgezeichnet
' Tastenkombination: Strg+s
ActiveSheet.Unprotect Password:="xyz"
Range("B10:AM180").Sort Key1:=Range("B10"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveSheet.Protect Password:="xyz"
End Sub

Anzeige
AW: Noch keine Lösung in Sicht??
23.08.2006 12:58:51
Heide_Tr
hallo Peter,
2 Möglichkeiten:
- entweder ersetzt Du in meinem Code die Variable Zeile durch zz (dann läuft es, weil zz bereits definiert ist und auch in dem Code vorher die Zeilen beinhaltet)
- oder Du definierst die Zeile, indem Du die Codezeile Dim ... um ", Zeile as Long" erweiterst.
viele Grüße. Heide
AW: Noch keine Lösung in Sicht??
23.08.2006 13:38:07
Peter Schilling
Hallo Excelfreund/in
ich habe versucht alles so zu machen wie du es gesagt hast. (Beide Varianten)
Ich habe alle "zz" durch "Zeile" ersetzt um umgekehrt.
Das Ergebnis ist beidemale "Rows(zz).Delete" ist invertiert.
Kannst du auch hier weiterhelfen.
Gruß Peter der langsam verzweifelt.
Anzeige
AW: Noch keine Lösung in Sicht??
23.08.2006 15:03:58
Heide_Tr
hallo Peter,
na, das kriegen wir schon hin....
ich habe den letzten Stand der Tabelle, den Du hier ins Forum gestellt hast (22.08.2006 16:53:29) genommen und den kompletten Code in Modul1 kopiert (alles andere gelöscht). anschließend habe ich in den 3 Zeilen von mir alle Vorkommen von "Zeile" durch "zz" ersetzt (5 Ersetzungen). Dann habe ich das Makro gestartet und die Fehlermeldung bekommen "Für diese Anwendung müssen alle verbundenen Zellen dieselbe Größe haben". Dies bezieht sich auf Sort in Makro34 und Deine Kommentarzellen im Tabellenblatt. Also habe ich die beiden Aufrufe von Makro34 auf Kommentar gesetzt:

Sub DublettenZusammen()                               ' 19.08.2006 name des Erstellers
Dim zz As Long, ii As Long, cc As Integer
'  Makro34
ActiveSheet.Unprotect Password:="xyz"
For zz = 10 To Cells(Rows.Count, 2).End(xlUp).Row - 1
ii = 0
If Not IsEmpty(Cells(zz, 2)) Then
While Cells(zz, 2) = Cells(zz + ii + 1, 2)
ii = ii + 1
For cc = 6 To 39
If Not IsEmpty(Cells(zz + ii, cc)) Then
Cells(zz, cc) = Cells(zz, cc) + Cells(zz + ii, cc)
End If
Next cc
Cells(zz + ii, 2).ClearContents
Range(Cells(zz + ii, 6), Cells(zz + ii, 39)).ClearContents
Wend
End If
Next zz
'  Makro34
For zz = Range("AN65536").End(xlUp).Row To 10 Step -1
If Range("AN" & zz) = 0 And Len(Range("AN" & zz)) > 0 Then Rows(zz).Delete
Next zz
End Sub


Sub Makro34()
' Makro34 Makro
' Makro am 08.05.2006 von mein Name aufgezeichnet
' Tastenkombination: Strg+s
ActiveSheet.Unprotect Password:="xyz"
Range("B10:AM180").Sort Key1:=Range("B10"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveSheet.Protect Password:="xyz"
End Sub

Das Programm ist gelaufen und hat alle Zeilen gelöscht, in denen AN eine 0 hatte.
Kopiere im ersten Schritt obenstehenden Code in die Tabelle vom 22.08.2006 16:53:29 und lösche den anderen Code. Wenn das Programm läuft, bringst Du Dein Tabellenblatt in Ordnung (lösche die von Dir angelegten verbundenen Zellen ("So sieht es vorher aus".....) und nimm die Kommentarzeichen für Makro34 aus dem Code und startest das Makro. Dann sollte alles in Ordnung sein.
viele Grüße. Heide
Anzeige
AW: Noch keine Lösung in Sicht??
23.08.2006 16:18:33
Peter Schilling
Hallo Heide
erst einmal danke für deine Hilfe.
Aber es werden ja jetzt alle Zeilen mit einer Null gelöscht.
Es soll aber nur die DB Nr. gelöscht werden die unter AN eine Null hat.
Durch anschliessendes sortieren verschwindet diese Zeile.
Die anderen Zeilen in denen keine DB Nr. eingetragen ist, müssen stehen bleiben, da hier Werte eingegeben und sortiert wird.
nun ist's genug
23.08.2006 19:38:14
Heide_Tr
hallo Peter,
im Moment werden alle Zeilen gelöscht, für die gilt: in AN ist etwas enthalten (Länge > 0) und der Inhalt ist 0:
If Range("AN" & zz) = 0 And Len(Range("AN" & zz)) > 0 Then Rows(zz).Delete
Wenn dies Deinen Bedingungen nicht entspricht, kannst Du (!) diese Bedingung beliebig erweitern:
- Z.B. lösche nur, wenn auch DB-Nummer enthalten ist
angenommen, die DB-Nummer steht in A, bedeutet das:
If Range("AN" & zz) = 0 And Len(Range("AN" & zz)) And len(Range("A"&zz))=0 then _
> 0 Then Rows(zz).Delete
Versuch's nur einfach, es ist nicht so kompliziert.
viele Grüße. Heide
Anzeige
AW: nun ist's genug
23.08.2006 20:06:07
Peter Schilling
Hallo Excelfreund/in
für mich als Anfänger ist das schon kompliziert. ;-)
Ich habe alles so eingegeben wie geschrieben wurde. hmm
Aber es kommt die Meldung.
Fehler beim Komilieren - Syntaxfehler in diesem Text/Code.???
If Range("AN" & zz) = 0 And Len(Range("AN" & zz)) And len(Range("B" & zz))
=0 then _> 0 Then Rows(zz).Delete
Habe ich wieder was falsch eingegeben/verstanden.
Gruß Peter
AW: Hilfe benötigt bei diesem Code
24.08.2006 09:42:22
Peter Schilling
Hallo Excelfreund/in
ich benötige weiterhin Hilfe bei meinem Problem.
Ich möchte, das die DB Nr in Spalte "B" gelöscht wird, wenn in Zeile AN eine Null steht.
(Nur dann soll die DB Nr gelöscht werden) Durch sortieren verschwindet dann auch diese Zeile.
Diesen Code habe ich hier aus dem Forum von einigen netten Leuten erhalten.
Aber mir fehlt noch der Abschluß dieses Codes, da ich hier beim einsetzen wohl einen Fehler mache. Fehler beim Kompilieren - Syntaxfehler
Wird die verknüpfung nicht zwischen "Zahl in B" und "AN = 0) gemacht, werden alle Zeilen mit einer Null gelöscht. Dies ist von mir nicht gewünscht.
Es sollen immer 180 Zeilen bleiben, da hier verweise auf eine Datenbank liegen.
Bitte helft mir bei der Einrichtung dieses Codes
Peter der seit 3 Tagen vorm PC hängt.
Option Explicit

Sub DublettenZusammen()                               ' 19.08.2006 name des Erstellers
Dim zz As Long, ii As Long, cc As Integer
'  Makro34
ActiveSheet.Unprotect Password:="xyz"
For zz = 10 To Cells(Rows.Count, 2).End(xlUp).Row - 1
ii = 0
If Not IsEmpty(Cells(zz, 2)) Then
While Cells(zz, 2) = Cells(zz + ii + 1, 2)
ii = ii + 1
For cc = 6 To 39
If Not IsEmpty(Cells(zz + ii, cc)) Then
Cells(zz, cc) = Cells(zz, cc) + Cells(zz + ii, cc)
End If
Next cc
Cells(zz + ii, 2).ClearContents
Range(Cells(zz + ii, 6), Cells(zz + ii, 39)).ClearContents
Wend
End If
Next zz
'  Makro34
For zz = Range("AN65536").End(xlUp).Row To 10 Step -1
If Range("AN" & zz) = 0 And Len(Range("AN" & zz)) And len(Range("A"&zz))=0 then _ > 0 Then Rows(zz).Delete
Next zz
End Sub


Sub Makro34()
' Makro34 Makro
' Makro am 08.05.2006 von mein Name aufgezeichnet
' Tastenkombination: Strg+s
ActiveSheet.Unprotect Password:="xyz"
Range("B10:AM180").Sort Key1:=Range("B10"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveSheet.Protect Password:="xyz"
End Sub

Anzeige
AW: Hilfe benötigt bei diesem Code
24.08.2006 18:35:51
Peter Schilling
hallo Excelfreunde
kann mir niemand bei meinem Problem helfen???
gruß Peter
AW: Hilfe benötigt bei diesem Code
25.08.2006 06:57:02
Heide_Tr
hallo Peter,
es wäre eigentlich ganz schön, wenn Du es selbst mal versuchtest...
Bislang sind wir davon ausgegangen, dass die Zeile (!) gelöscht werden soll, wenn in AN eine 0 steht. Also:
If Range("AN" & zz) = 0 And Len(Range("AN" & zz)) then _ > 0 Then Rows(zz).Delete
(Der Syntaxfehler, den Du erhieltst rührte vom "_". Dieses Zeichen gibt an, dass der Code in der nächsten Zeile fortgesetzt wird. Kopiert man ihn in eine (!) Zeile, muss das "_" entfernt werden.)
Jetzt möchtest Du, dass die Zelle B geleert wird, wenn in AN eine 0 steht. (es ist wichtig, Fragen präzise zu formulieren)
Also ersetze die eben genannte Zeile durch:
If Range("AN" & zz) = 0 then Range("B" & zz) = ""
viele Grüße. Heide
Anzeige
AW: Hilfe benötigt bei diesem Code
25.08.2006 09:27:01
Peter Schilling
Hallo Excelfreund/in
mit dem Code funktioniert alles.
Danke auf für dein Verständnis. (Bedenke Anfänger ohne Vba Kenntnisse)
Es läuft zwar alles sehr sehr langsam und ich muss 2 mal sortieren um das gewünschte ergebnis zu erhalten.
Aber OK mann kann nicht alles haben.
Dies ist jetzt der Fertige Code für Sortieren, Doubletten addieren und Löschen des überflüssigen Textes.
Option Explicit

Sub DublettenZusammen()                               ' 19.08.2006 name des Erstellers
Dim zz As Long, ii As Long, cc As Integer
Makro34
ActiveSheet.Unprotect Password:="xyz"
For zz = 10 To Cells(Rows.Count, 2).End(xlUp).Row - 1
ii = 0
If Not IsEmpty(Cells(zz, 2)) Then
While Cells(zz, 2) = Cells(zz + ii + 1, 2)
ii = ii + 1
For cc = 6 To 39
If Not IsEmpty(Cells(zz + ii, cc)) Then
Cells(zz, cc) = Cells(zz, cc) + Cells(zz + ii, cc)
End If
Next cc
Cells(zz + ii, 2).ClearContents
Range(Cells(zz + ii, 6), Cells(zz + ii, 39)).ClearContents
Wend
End If
Next zz
Makro34
For zz = Range("AN200").End(xlUp).Row To 10 Step -1
If Range("AN" & zz) = 0 Then Range("B" & zz) = ""
Next zz
End Sub


Sub Makro34()
' Makro34 Makro
' Makro am 08.05.2006 von mein Name aufgezeichnet
' Tastenkombination: Strg+s
ActiveSheet.Unprotect Password:="xyz"
Range("B10:AM180").Sort Key1:=Range("B10"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveSheet.Protect Password:="xyz"
End Sub

Peter der jetzt etwas glücklicher ist.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige