Beitrag aus dem Excel-Forumsarchiv
Home Zur Übersicht    
Thema: Liste erstellen / sortieren / doppelte löschen

Betrifft: Liste erstellen / sortieren / doppelte löschen
von: MarkusH
Geschrieben am: 31.07.2010 18:47:12

Hallo Excel-Profis,

in einem Arbeitsblatt möchte ich per VBA-Makro eine simple Liste erstellen.
Es wird ein Wert (Name) vom Benutzer abgefragt und ans Ende der Liste in Spalte B eingetragen, in Spalte A gibt es eine fortlaufende Nummer, bspw.
1 Max
2 Moritz
3 Stefan
4 Max

Nun kann es vorkommen dass ein Name in Spalte B doppelt existiert (im Beispiel oben "Max") da dieser 2x eingegeben wurde.
In diesem Fall sollte dann die kpl. Zeile gelöscht werden.

Wie kann ich am besten vorgehen so dass ich alles in einem Makro unterbekomme?
(also erstellen der Liste nach Abfrage per Inputbox, Abfrage ob weiterer Datensatz erfasst werden soll, Ermitteln von doppelten Einträgen in Spalte B, Löschen der entsprechenden Zeile).

Ich sitze da jetzt schon fast den ganzen Tag dran. Ich denke dass man das in wenigen Zeilen erstellen kann aber ich kriegs nicht hin. :-/
Wer kann bitte helfen?

  

Betrifft: AW: Liste erstellen / sortieren / doppelte löschen
von: Josef Ehrensberger
Geschrieben am: 31.07.2010 19:01:36


Hallo markus,

probier es so.


Private Sub CommandButton1_Click()
  Dim lngNext As Long, strInput As String, vntRet As Variant
  
  
  Do
    strInput = InputBox("Bitte Name eingeben:", "Eingabe", "")
    If strInput = "" Then Exit Do
    vntRet = Application.Match(strInput, Columns(2), 0)
    If IsNumeric(vntRet) Then
      MsgBox "Der Eintrag " & strInput & " ist schon vorhanden!"
    Else
      lngNext = Cells(Rows.Count, 1).End(xlUp).Row + 1
      Cells(lngNext, 1) = Application.Max(Columns(1)) + 1
      Cells(lngNext, 2) = strInput
      lngNext = lngNext + 1
    End If
  Loop
  
End Sub


Gruß Sepp



  

Betrifft: AW: Liste erstellen / sortieren / doppelte löschen
von: MarkusH
Geschrieben am: 31.07.2010 19:44:31

Wahnsinn!
Die Idee doppelte Namen gar nicht zuzulassen ist super! Ich hätte für die Umsetzung allerdings 2 Wochen benötigt und 40-50 Zeilen Code erstellt. ^^ Aus diesem Quellcode kann ich ne Menge lernen :-)
Dankeschön, alles bestens.


  

Betrifft: AW: Liste erstellen / sortieren / doppelte löschen
von: MarkusH
Geschrieben am: 01.08.2010 17:55:16

Hallo,

ich habe etwas Wichtiges vergessen und hoffe es ist okay wenn ich die Frage als noch offen markiere :-)

Spalte B müsste nun alphabetisch (aufsteigend) sortiert werden. Und damit nicht genug, Spalte A ist eine fortlaufende Nummer und die Nummerierung sollte nach der Codeausführung immer fortlaufend sein (also 1,2,3 usw egal welche Nummer vom Code bei der Eingabe der Daten vergeben wurde).

Ich hab versucht mit dem Makroeditor eine Sortierung aufzuzeichnen und dann einzufügen aber es hat nicht geklappt. Könnte jemand helfen bitte?

Vielen Dank!!


  

Betrifft: AW: Liste erstellen / sortieren / doppelte löschen
von: Josef Ehrensberger
Geschrieben am: 01.08.2010 18:04:04


Hallo Markus,

probier's mal so.

Private Sub CommandButton1_Click()
  Dim lngNext As Long, strInput As String, vntRet As Variant
  
  
  Do
    strInput = InputBox("Bitte Name eingeben:", "Eingabe", "")
    If strInput = "" Then Exit Do
    vntRet = Application.Match(strInput, Columns(2), 0)
    If IsNumeric(vntRet) Then
      MsgBox "Der Eintrag " & strInput & " ist schon vorhanden!"
    Else
      lngNext = Cells(Rows.Count, 1).End(xlUp).Row + 1
      Cells(lngNext, 1) = Application.Max(Columns(1)) + 1
      Cells(lngNext, 2) = strInput
      Columns(2).Sort Key1:=Cells(2, 2), Order1:=xlAscending, Header:=xlGuess
    End If
  Loop
  
End Sub





Gruß Sepp



  

Betrifft: AW: Liste erstellen / sortieren / doppelte löschen
von: MarkusH
Geschrieben am: 01.08.2010 18:46:01

Hallo Sepp,

Ich habe bei der Sortierung den Header auf xlYes gesetzt weil xlGuess bei einem Test Probleme bereitet hat - ich hatte verschwiegen dass es eine Überschrift gibt und dass "Name" der Überschrift wurde in die Tabelle mit einsortiert, nicht aber "Nummer" (Überschrift Spalte A).
Funktioniert super, vielen Dank! :-)