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

Inputbox für Duplikate löschen

Inputbox für Duplikate löschen
06.10.2002 14:18:53
Franz Gerber
Hallo,
vielleicht könnt Ihr mir helfen.
Ich habe folgendes Makro damit wenn in Spalte A Duplikate drinnen sind die Zeile mit den Duplikaten gelöscht wird.
Das Makro ist auf die Spalte A zugeschnitten.
Ist es möglich, daß ich anstelle der Spalte A mit einer Inputboxeingabe die Spalte auswählen kann?
z.B. mit Spalte = UCase(InputBox("Bitte geben Sie den Spaltenindex ein: ", "Spaltenindex-Eingabe", "A"))
If Spalte = "" Then Exit Sub
s = Asc(Spalte) - 64
Kann man das s in den Code mit Einbauen, z.B. Cells(x, s)

Vielen Dank schon mal im Voraus.

Sub DuplikateLöschen_Spalten()
'Löscht alle Duplikate in Spalte A, und gesamte Zeile mit Duplikaten
Dim LastC As Long, x As Long
Application.ScreenUpdating = False
LastC = Range("A65536").End(xlUp).Row
For x = LastC To 1 Step -1
If WorksheetFunction.CountIf(Range("A1:A" & x), Cells(x, 1)) > 1
Then
Cells(x, 1).EntireRow.Delete
End If
Next
Application.ScreenUpdating = True
End Sub


17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
range(spalte & "1:" & spalte & x)
06.10.2002 16:00:18
andre
hallo franz,
genau wie du imcode eine variable für die letzte zelle gesetzt hast kannst du Variablen auch für den Spaltenbuchstabe setzen, also range(spalte & "1:" & spalte & x) usw.
gruss andre
Re: range(spalte & "1:" & spalte & x)
06.10.2002 16:32:49
Franz
Hallo,
das funzt leider auch nicht!

Sub DuplikateLöschen_Spalten()
'Löscht alle Duplikate in Spalte A, und gesamte Zeile mit Duplikaten
Dim LastC As Long, x As Long
Dim Spalte As String
Dim S As String

Application.ScreenUpdating = False
Spalte = InputBox("Bitte geben Sie die Spalte ein!", "Eingabe")
If Spalte = "" Then Exit Sub
S = Asc(Spalte) - 64

LastC = Range("A65536").End(xlUp).Row
For x = LastC To 1 Step -1
If WorksheetFunction.CountIf(Range(Spalte & "1:" & Spalte & x), Cells(x, Spalte)) > 1 Then
Cells(x, Spalte).EntireRow.Delete
End If
Next
Application.ScreenUpdating = True
End Sub

Die Zeile mit der "Spalte"-Variablen wird als LAufzeitfehler markiert.
Habe in die Inputbox eine 2 eingegeben, funktioniert aber auch nicht wenn ich ein B eingebe.

Weiß jemand dazu eine Lösung?

Anzeige
Re: range(spalte & "1:" & spalte & x)
06.10.2002 16:49:55
andre
Hallo Franz,
bei cells geht natürlich kein Buchstabe.
Dafür musst Du dann die Spalte "umrechnen".
Eventuell geht da hinten statt cells auch range?
gruss andre
Re: Range - Spalte - Cells
06.10.2002 16:55:26
Franz
Hallo andre,

ich verwende ein anderes Makro, bei dem ich auch mit einer Inputbox die Spalte abfrage.
Die Umrechnung sollte eigentlich mit "S = Asc(Spalte) - 64" erfolgen.
Aber wie gesagt, geht es auch nicht wenn ich die Zahl 2 für die Spalte B eingebe.
Wie soll ich das Range einfügen?
Bin leider VBA-Anfänger und bin nicht so tief in VBA drin.

Habe auch mit der Suche keine entsprechende Lösung finden können.

Gruß
Franz

Anzeige
Re: Range - Spalte - Cells
06.10.2002 17:16:13
andre
... da müste dann bei cells auch das s stehen und nicht spalte,
werde es mal testen
Re: Range - Spalte - Cells
06.10.2002 17:25:44
andre
... und bei dim s% und nicht as string, dann gehts.
Es wird die letzte Zeile gelöscht,wenn der Wert schon malvorhanden ist. Weitere doppelte Werte werden nicht gelöscht.
gruss andre
Re: Doppelte mit Inputboxauswahl
06.10.2002 17:37:03
Franz
Hallo andre,

tut mir leid, es gibt zwar keine Fehlermeldung aber es tut sich auch nichts.

Sub DuplikateLöschen_Spalten()
'Löscht alle Duplikate in Spalte , und gesamte Zeile mit Duplikaten
Dim LastC As Long, x As Long
Dim Spalte As String
Dim S%

Application.ScreenUpdating = False
Spalte = InputBox("Bitte geben Sie die Spalte ein!", "Eingabe")
If Spalte = "" Then Exit Sub
S = Asc(Spalte) - 64

LastC = Range("A65536").End(xlUp).Row
For x = LastC To 1 Step -1
If WorksheetFunction.CountIf(Range(Spalte & "1:" & Spalte & x), Cells(x, S)) > 1 Then
Cells(x, S).EntireRow.Delete
End If
Next
Application.ScreenUpdating = True
End Sub

Habe bestimmt wieder einen Fehler drinnen, aber welcher ?

Gruß
Franz

Anzeige
Re: Doppelte mit Inputboxauswahl
06.10.2002 18:03:16
Franz
Bin jetzt auf eine andere Lösung gestoßen.
Damit funktioniert die Spaltenauswahl per Inputbox.

Sub DuplikateLöschen_SpalteX()
'Löscht alle Duplikate in Spalte X, und gesamte Zeile mit Duplikaten

Dim Spalte As String
Dim S As Integer
Dim i As Integer, j As Integer

Application.ScreenUpdating = False
Spalte = UCase(InputBox("Bitte geben Sie die Spalte ein!", "Eingabe", "A"))
If Spalte = "" Then Exit Sub
S = Asc(Spalte) - 64

'Makro arbeitet von unten nach oben!
For i = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
For j = 2 To ActiveSheet.Cells(Rows.Count, S).End(xlUp).Row
If Cells(i, S) = Cells(j, S) And i <> j Then
Rows(i).Delete
GoTo Weiter
End If
Next j
Weiter:
Next i

Application.ScreenUpdating = True
End Sub


Wäre aber schon gut wenn zu dem ersten Makro auch noch eine Lösung gefunden würde.

Gruß
Franz

Anzeige
code in n eue mappe kopieren und ausführen
06.10.2002 20:02:20
andre
Hallo Franz,
hatte ja schon geschrieben, dass mir aufgefallen ist,dass nur der letzte wert gelöscht wird, wenn er doppelt ist. habe nun den code in eine neue mappe kopiert, daten in spalte a geschrieben, und nun gehts. wer weiss, was sich da in der ersten mappe verhakelt hat. aber so was hilft öfter.
gruss andre
Re: code in n eue mappe kopieren und ausführen
06.10.2002 22:28:46
Franz
Hallo Franz,

kannst Du den Code hier rein stellen, meiner funzt nicht mehr.

vielen Dank für Deine Hilfe.

Gruß
Franz

Re: code in n eue mappe kopieren und ausführen
07.10.2002 05:15:37
andre
???
dein letzter code hier geht.
https://www.herber.de/forum/messages/166702.html
gruss andre
Re: code in n eue mappe kopieren und ausführen
07.10.2002 18:10:58
Franz
Hallo Andre,

habe diesen Code in ein Modul kopiert und ausprobiert, aber es tut sich nichts.
Kannst Du den Code der bei Dir läuft ins Forum reinstellen, und auch mitteilen wo Du ihn drinnen hast in einem Modeul oder in dieser Arbeitsmappe oder so.

Wäre schon gut wenn ich diesen Code bei mir zum laufen bringen könnte.

Gruß
Franz

Anzeige
Re: code in n eue mappe kopieren und ausführen
07.10.2002 18:42:37
andre
Hallo Franz,
schau mal in Dein mail.
Andre
Re: code in n eue mappe kopieren und ausführen
07.10.2002 19:51:56
Franz
Hallo,

Spalte A funzt jetzt.
Aber andere Spalten wie B oder C gehen wieder nicht.
Bin am verzweifeln.

Gruß
Franz

Re: code in n eue mappe kopieren und ausführen
08.10.2002 19:19:09
Franz
Ich hab es immer noch nich kapiert.
Spalte AA funktioniert nicht.
Excel Makro auslichten mit freier Spaltenwahl
08.10.2002 20:40:35
andre
Hallo Franz,

hier der code wie er bei mir funktioniert, von A über AA bis IV.
Es sind einige Kommentare usw drin, siehe das letzte mail.


Sub DuplikateLöschen_Spalten()
'Löscht alle Duplikate in Spalte , und gesamte Zeile mit Duplikaten
'programmiert von ?
'bearbeitet von A.Schau am 08.10.2002
    Dim LastC As Long, x As Long
'String-Variable für range
    Dim Spalte$
'Ganzzahl-Variable für cells
    Dim S%, Sl%, Sr%
'Auf Null setzen für Plausibilitätsprüfung Buchstabe bei zweistelligem String
    Sl = 0: Sr = 0
'Flackern aus
    Application.ScreenUpdating = False
'...
    Spalte = InputBox("Bitte geben Sie die Spalte ein!", "Eingabe")
'wenn leer oder mehr als 2 Zeichen dann beenden
'alternativ auch Msgbox und Rücksprung zur Inputbox mit Sprungmarke möglich
    If Spalte = "" Or Len(Spalte) > 2 Then Exit Sub
'Eingabe mit zwei Zeichen umrechnen
    If Len(Spalte) = 2 Then
        Sl = (Asc(UCase(Left(Spalte, 1))) - 64) * 26  'bei AA sollte hier 1*26 = 26 rauskommen
        Sr = Asc(UCase(Right(Spalte, 1))) - 64 'und hier bei AA dann 1
        S = Sl + Sr 'und hier bei AA 27
    Else
'Eingabe mit einem Zeichen umrechnen
        S = Asc(UCase(Spalte)) - 64
    End If
'Plausibilitätsprüfung, eventuell werden nicht alle Fehler abgefangen?
'
    If S < 1 Or S > 256 Or Sl < 0 Or Sr < 0 Then Exit Sub
'letzte Zelle der Spalte ermitteln
    LastC = Range(Spalte & "65536").End(xlUp).Row
'Schleife von letzter Zelle bis Zelle1 auslichten, es werden immer
'die letzten vorkommenden "multikate" entfernt
    For x = LastC To 1 Step -1
        If WorksheetFunction.CountIf(Range(Spalte & "1:" & Spalte & x), Cells(x, S)) > 1 Then
            Cells(x, S).EntireRow.Delete
        End If
    Next
'Flackern ein
    Application.ScreenUpdating = True
End Sub 
     Code eingefügt mit Syntaxhighlighter 1.16


Anzeige
Re: Excel Makro auslichten mit freier Spaltenwahl
08.10.2002 22:39:28
Franz
Hallo Franz,

danke für den Code.
Jetzt läuft er auch bei mir.
Bin halt nicht so der Profi in VBA.

Gruß
Franz

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige