Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1296to1300
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
Doppelte Zellen löschen
15.02.2013 20:15:51
Tom
Hallo!
Ich habe folgendes Problem: Spalte A und D sowie B und E sollen auf identische Inhalte in Zellen überprüft werden. Werden diese gefunden, sollen diese Zellen gelöscht werden: also nicht nur der "Inhalt", sondern die komplette Zelle soll verschwinden. Wird z.B. zelle A3 gelöscht, rutscht Zelle A4 an die Stelle von A3 hoch.
Das alles soll über ein Makro gelöst werden ...
Kann mir jemand helfen? Ich habe null VBA-Kenntnisse...
Gruß
Tom

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelte Zellen löschen
15.02.2013 21:07:01
Hajo_Zi
Hallo Tom,
benutze Spezialfilter ohne Makro.
Doppelte Löschen
angenommen Deine Daten stehen in A1 bis A?
Bereich markieren = Spalte A anklicken (evtl. eine Leerzeile vorher einfügen)
Daten / Filter / Spezialfilter
keine Duplikate
jetzt kannst du noch einstellen, ob an gleicher Stelle oder woanders placiert; hier also B1 eingeben
Spalte A anschließend löschen
Bei mehreren Spalten, muss die Liste eine Überschrift haben, am besten fett formatiert, dann erkennt sie auch Excel als Überschrift.

Anzeige
AW: Doppelte Zellen löschen
16.02.2013 00:04:58
Tom
Hallo Hajo,
vielen Dank für Deine Antwort! Leider komme ich nicht zurecht mit diesem Spezialfilter ... ich gebe aber noch nicht auf...
Schönen Abend noch :-)
Tom

Doppelte Zellen löschen mit Dictionary
16.02.2013 07:45:49
Erich
Hi Tom,
probier mal

Option Explicit
Sub start()
Dim ii As Long
For ii = 1 To 5                        ' Spalten 1 bis 5 außer 3 (A,B,D,E)
If ii  3 Then SpalteOhneDups_Dictionary ii
Next ii
End Sub
Sub SpalteOhneDups_Dictionary(lngSp As Long)
Dim objDic As Object, lngAnz As Long, arrW, zz As Long, rngDel As Range
Set objDic = CreateObject("Scripting.Dictionary")
lngAnz = Cells(Rows.Count, lngSp).End(xlUp).Row
arrW = Cells(1, lngSp).Resize(lngAnz).Value     ' Werte der Spalte in Array
If lngAnz > 1 Then
For zz = 1 To lngAnz
If Not IsEmpty(arrW(zz, 1)) Then
If objDic.Exists(arrW(zz, 1)) Then     ' merken, wenn schon da
If rngDel Is Nothing Then
Set rngDel = Cells(zz, lngSp)
Else
Set rngDel = Union(rngDel, Cells(zz, lngSp))
End If
Else
objDic(arrW(zz, 1)) = 0             ' eintragen
End If
End If
Next zz
End If
If Not rngDel Is Nothing Then rngDel.Delete xlShiftUp  ' löschen
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Doppelte Zellen löschen
16.02.2013 09:57:21
Tom
Hallo Erich!
Erstmal super lieben Dank für die Mühe, die Du Dir gemacht hast! :-)
Leider funktioniert das Makro bei mir (noch) nicht. Es erscheint bezogen auf die Zeile " lngAnz = Cells(Rows.Count, lngSp).End(xlUp).Row " der Fehlerhinweis: "Fehler beim Kompilieren: Variable nicht definiert“ . Dabei ist „IngSp“ blau markiert worden.
Ich habe übrigens die Bezeichnung des Sub („SpalteOhneDups_Dictionary(lngSp As Long“) in „Makro1“ umbenannt, was (für mich) übersichtlicher ist. Ich hoffe/denke, dass das kein Problem ist (ich bin in vba, wie Du merkst, nicht bewandert…).
Kannst Du mir weiterhelfen?
Viele Grüße
Tom

Anzeige
einfach umbenannt...
16.02.2013 10:43:39
Erich
Hi Tom,
hast du das nicht mal ausprobiert, bevor du die 2. Prozedur umbenannt hast? :-( An der Umbenennung liegt es nämlich!
Je weniger Ahnung du von VBA hast, umso mehr solltest du darauf vertrauen, dass die dir angebotene Lösung sinnvoll ist,
so wie sie ist, nicht anders.
SpalteOhneDups_Dictionary ist eine Prozedur mit einem Parameter (einer Variablen) - der Spaltennumer lngSp.
Mit lngSp sagt man der Prozedur, in welcher Spalte sie arbeiten soll.
Wenn du stattdessen einfach Makro1 schreibst, ist lngSp unbekannt. Daher also der Fehlerhinweis.
Wie kommst du auf den Gedanken, "Makro1" sei übersichtlicher als SpalteOhneDups_Dictionary ?
Du könntest vielleicht etzwas kürzer SpalteOhneDups(lngSp As Long) schreiben.
Makro1 dagegen ist einfach nur nichtssagend.
Welches Makro versuchst du zu starten? Dafür gibt es das Makro "start".
Hast du auch da Makro1 reingeschrieben?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: einfach umbenannt...
16.02.2013 11:32:16
Tom
Hallo Erich,
Deine Kritik ist sicherlich berechtigt ...
Ich habe nun das Makro in "SpalteOhneDups_Dictionary" umbenannt und den Code auf den alten Stand gebracht. Jetzt erscheint der Fehlerhinweis: "Argument ist nicht optional".
Woran könnte das liegen?
(Vielen Dank für Deine Geduld!)
Gruß
Tom

Daran, dass du irgendeine ...
16.02.2013 12:06:31
Luc:-?
…Prozedur (Funktion oder Subroutine) ohne ein/en verlangtes/n Argument/Parameter aufgerufen hast, Tom;
möglicherweise SpalteOhneDups_Dictionary aus Start ohne ii oder direkt ohne Start!
Verstehe nicht, dass sich Leute an VBA rantrauen, die meinen, sich nicht mal mit Syntax und Pgmierregeln befassen zu müssen. Wer sich so ans Steuer eines PKW setzen würde, dürfte sich über einen Unfall nicht wundern!
Gruß Luc :-?

Anzeige
AW: Daran, dass du irgendeine ...
16.02.2013 12:53:51
Tom
Lieber Luc,
das Forum hat mir in der Vergangenheit bereits einige Male sehr gut bei meinen Fragen weitergeholfen. Ich bin froh, dass es euch excel-cracks gibt und ihr sowohl denen helft, die sich sehr gut ins Thema eingearbeitet haben, als auch so einem wie mir, der nur hin und wieder mit makros zu tun har.
In diesem Fall habe ich mich einfach sehr blöd angestellt. Im Nachhinein ist mir dies klar ...
Gruß
Tom

Wozu die Umbenennerei?
16.02.2013 12:13:03
Erich
Hi Tom,
da kann ich dir nur raten, den Code aus meinem Beitrag von 07:45:49 noch einmal zu kopieren und exakt so zu verwenden.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: einfach umbenannt...
16.02.2013 12:40:26
Tom
Hei Erich,
ich habe den Fehler (den ich an dieser Stelle lieber nicht erkläre ... ) gefunden ... Danke für Deine Hilfe! :-)
Gruß
Tom

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige