Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - doppelte Werte löschen - Bedingung
#1
Hallo zusammen,

ich habe eine Frage zur Umsetzung im VBA, und hoffe auf eure Hilfe.

Ich möchte über ein VBA Makro Einträge suchen, die den gleichen Status aufweisen (erledigt) und dann alle Zeilen bis auf eine löschen lassen. z.B. Für das löschen habe ich schon folgenden VBA Code gefunden: ---> soll hier z.B. 2 von 3 Aufträgen mit Status erledigt löschen

Auftragsnummer        Status           Datum
10                            offen            10.01.2017
10                            erledigt         11.01.2017
10                            erledigt         11.01.2017
10                            erledigt         11.01.2017


Option Explicit

Sub DoppelteNr()

  Dim iRow As Integer, iRowL As Integer
 
  iRowL = Cells(Cells.Rows.Count, 6).End(xlUp).Row
  For iRow = iRowL To 1 Step -1
     If WorksheetFunction.CountIf(Columns(6), Cells(iRow, 6)) > 1 Then
'         Rows(iRow).Delete
     End If
  Next iRow
End Sub


Vielen Dank, Kirschgurke
Antworten Top
#2
Ist hier eine Abhängigkeit zur Auftragsnummer wichtig?
Soll es dann so aussehen?
Vorher:
Code:
AuftragsNr Status   Datum        
10         offen    10.01.2017
10         erledigt 11.01.2017
10         erledigt 11.01.2017
10         erledigt 11.01.2017
11         offen    12.01.2017
11         erledigt 11.01.2017
11         erledigt 11.01.2017

Nachher:
Code:
AuftragsNr Status   Datum        
10         offen    10.01.2017
10         erledigt 11.01.2017
11         offen    12.01.2017
11         erledigt 11.01.2017
_________________
Gruss
Nitro

-=Schon die Piste, geh FREERIDEN=-
Antworten Top
#3
Ja, genau so soll es aussehen. Sonst explodiert Exel nch :)
Antworten Top
#4
Hallo zusammen,

habe soweit folgenden VBA Code. Wie schaffe ich es, dass er einen Auftrag mit "erledigt" stehen lässt, nicht löscht, und nur alle anderen überflüssigen löscht?

Sub DoppelteNr()

Dim iRow As Integer, iRowL As Integer

iRowL = Cells(Cells.Rows.Count, 6).End(xlUp).Row
For iRow = iRowL To 1 Step -1
If WorksheetFunction.CountIf(Columns(6), Cells(iRow, 6)) > 1 Then
If Cells(iRow, 4) = "erledigt" Then
Rows(iRow).Delete
End If
End If
Next iRow
End Sub
Antworten Top
#5
Hier anbei die Lösung, wo man die Spalte, wo doppelte Werte vorkommen, definieren kann

Sub Loesche_DZeilen()
Dim temp
Dim i%, n%, ZSpalte%
Dim Zeilenzahl As Long
ZSpalte = 6 'F wird gezählt
Zeilenzahl = Sheets(1).Cells(Rows.Count, ZSpalte).End(xlUp).Row
For n = 2 To Zeilenzahl
temp = Sheets(1).Cells(n, ZSpalte).Value
For i = n To Zeilenzahl
m = Sheets(1).Cells(i + 1, ZSpalte).Value
Do While Sheets(1).Cells(i + 1, ZSpalte).Value = temp
Sheets(1).Cells(i + 1, ZSpalte).EntireRow.Delete
Zeilenzahl = Zeilenzahl - 1
Loop
Next i
Next n
End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste