Microsoft Excel

Herbers Excel/VBA-Archiv

doppelte werte komplett löschen

Betrifft: doppelte werte komplett löschen von: simonek
Geschrieben am: 27.10.2014 14:18:27

Hallo meine lieben,
ich bräuchte zwei codes.
in Spalte A sind doppelte werte und ich möchte gerne per VBA , das er alle doppelte Werte KOMPLETT löscht.
Der zweite code wäre:
Alle Zeilen löschen, wenn in Spalte D die Zahl 2 , 3 oder die 5 steht.
wäre sowas möglich?

Danke erstmal
Liebe Grüße Simone

  

Betrifft: AW: doppelte werte komplett löschen von: yummi
Geschrieben am: 27.10.2014 14:59:52

Hallo Simone,

zu 1:
ActiveSheet.Range("$C$1:$D$4").RemoveDuplicates Columns:=1, Header:=xlYes

zu 2:

 
sub loescheZeile
dim letztezeile as long
dim i as long

letztezeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
for i = 1 to leztezeile
if ActiveSheet.Cells(i,4).value = 2  or ActiveSheet.Cells(i,4).value = 3 or ActiveSheet.Cells(i, _
4).value = 5 then
ActiveSheet.rows(i).delete
next i
end sub
müsste so passen

Gruß
yummi


  

Betrifft: AW: doppelte werte komplett löschen von: simonek
Geschrieben am: 27.10.2014 16:16:44

Hallo yummi,
zu 1 eine frage: muss der code so aussehen?
zu 1:

Sub doppeltelöschen
ActiveSheet.Range("$C$1:$D$4").RemoveDuplicates Columns:=1, Header:=xlYes
End Sub
Danke für deine Hilfe


  

Betrifft: AW: doppelte werte komplett löschen von: yummi
Geschrieben am: 27.10.2014 16:51:47

Hallo Simone,

wenn deine Tabelle von C1 bis D4 geht ja.
wenn du es variabel haben willst (für die Anzahl Zeilen):

z.B.: Tabelle von C1 bis D letzte Zeile

ActiveSheet.Range("C1:D" & ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row). _
RemoveDuplicates Columns:=1, Header:=xlYes
In Der Klammer hinter Range gibst Du die 1. Spalte und Zeile und die letzte Spalte fix an.
Hinter Columns gibst du die Spalte deines gewählten Bereichs an in dem die Duplikate entfernt werden sollen (1 bedeutet in diesem Fall spalte C)
Header:=XlYes bedeutet du hast eine Überschriftszeile
Wenn nicht einfach xlNo

Gruß
yummi


  

Betrifft: AW: doppelte werte komplett löschen von: simonek
Geschrieben am: 27.10.2014 19:14:57

Hi yummi,
Super danke für deine ausführlich hilfe.
Danke danke
Liebe grüße simonenb


  

Betrifft: code funktioniert leider nicht von: simonek
Geschrieben am: 28.10.2014 05:20:52

Hallo yummi,
Leider funktioniert der erste code mit doppelte werte in Spalte A komplett löschen nicht.
Die Zeile wird gelb :-(


LG simone


  

Betrifft: AW: code2 leider auch nicht von: simonek
Geschrieben am: 28.10.2014 05:33:12

Hallo,
Beim zweiten code ( Spalte D die Zeilen löschen wenn die Zahl 2 oder 3 oder 5 )
Geht leider auch nicht.
Fehler bei " Next i" da kommt dann : Fehler beim kompilieren Next ohne For

Was nun?
LG simone


  

Betrifft: da fehlt sicher ein End If ...owT von: Matthias L
Geschrieben am: 28.10.2014 07:03:06




  

Betrifft: und beachte die Schreibweise der Variable ... von: Matthias L
Geschrieben am: 28.10.2014 07:46:24

Hallo

Solltest Du den Code von yummi 1:1 kopiert haben, musst Du noch mal anpassen.

letztezeile = ActiveSheet.UsedRange.SpecialCells( _
xlCellTypeLastCell).Row
for i = 1 to leztezeile
Das kann zwar passieren, aber wenn Du ohne Option Explicit arbeiten solltest
merkst Du u.U. nicht das die Variable beim 2.Einsatz falsch geschrieben wurde.



2.
Ich würde beim Löschen von Zeilen immer rückwärts arbeiten.
With Tabelle1 'CodeName des Registers
 letztezeile = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
  For i = letztezeile To 1 Step -1
   If .Cells(i, 4).Value = 2 Or .Cells(i, 4).Value = 3 Or .Cells(i, 4).Value = 5 Then
      .Rows(i).Delete
   End If
  Next i
End With
Gruß Matthias


  

Betrifft: AW: code2 leider auch nicht von: yummi
Geschrieben am: 28.10.2014 09:25:13

Hallo Simone,

sry hatte den Code nur hier im Forum getippt, hab dein vba level nicht beachtet.

hier jetzt syntaktisch und funktional korrekt

Option Explicit

Sub loescheZeile()
Dim letztezeile As Long
Dim i As Long

    letztezeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    For i = letztezeile To 1 Step -1
        If ActiveSheet.Cells(i, 4).Value = 2 Or ActiveSheet.Cells(i, 4).Value = 3 Or  _
ActiveSheet.Cells(i, 4).Value = 5 Then
            ActiveSheet.Rows(i).Delete
        End If
    Next i
End Sub
       
füg den gesamten Code in ein leeres Modul deiner Datei ein.

Gruß
yummi


  

Betrifft: so wäre es auch gegangen ... von: Matthias L
Geschrieben am: 28.10.2014 09:44:24

Hallo

Hättest auch einfach schreiben können
Danke, Matthias fürs Korrigieren.
Denn gelesen hast Du es 100%ig

Gruß Matthias


  

Betrifft: Danke Mattias von: yummi
Geschrieben am: 28.10.2014 10:16:18

ja hatte ich und stimme dir 100% zu.
lösche eigentlich auch immer rückwärts, weiß nicht warum gestern nicht :-)

aber so ist es für Simone auch nachvollziehbar. Ich woltle ja ihr helfen und nicht dich kritisieren.

Finde es ja gut wenn hier von vielen Seiten geholfen wird.

Gruß
yummi


  

Betrifft: code 1 macht probleme von: simonek
Geschrieben am: 28.10.2014 14:52:21

Hallo Danke an alle:-)
Der zweite code funktioniert supi:-).leider macht der code 1( alle doppelte Spalte A komplett löschen) noch Probleme.hoffe ihr könnt das auch noch lösen :-)
LG simone


  

Betrifft: was heißt das --> code 1 macht probleme von: Matthias L
Geschrieben am: 29.10.2014 10:56:13

Hallo

Zitat:


leider macht der code 1( alle doppelte Spalte A komplett löschen) noch Probleme.hoffe ihr könnt das auch noch lösen

Was heißt das (macht Probleme) ?

Gruß Matthias


 

Beiträge aus den Excel-Beispielen zum Thema "doppelte werte komplett löschen"