Anzeige
Archiv - Navigation
1260to1264
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
Inhaltsverzeichnis

BITTE Hilfe bei Makro! Bestimmte Zeilen löschen

BITTE Hilfe bei Makro! Bestimmte Zeilen löschen
Micha
Hallo liebe Spezialisten.
Ich suche ein Makro, welches mir nur die Zeilen mit dem Start und Enddatum anzeigt.
Alle übrigen Spalten sollen gelöscht werden.
Eine Beispieldatei befindet sich im Dateianhang.
Beschreibung befindet sich im Kommentar A2
https://www.herber.de/bbs/user/80018.xls
Ich hoffe sehr dass Ihr mir helfen könnt.
Danke Micha

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Bestimmte Zeilen löschen
02.05.2012 16:07:31
Erich
Hi Micha,
probier mal:

Option Explicit
Sub Makro1()
Dim lngZ As Long, zz As Long, rngDel As Range
Cells(2, 6).FormulaArray = _
"=D2+ROW(D2)%%=MIN(IF($A$2:$A$14&$B$2:$B$14=$A2&$B2,D$2:D$14+ROW(D$2:D$14)%%))"
Cells(2, 7).FormulaArray = _
"=E2+ROW(E2)%%=MAX(IF($A$2:$A$14&$B$2:$B$14=$A2&$B2,E$2:E$14+ROW(E$2:E$14)%%))"
lngZ = Cells(Rows.Count, 4).End(xlUp).Row
Range("F2:G2").Copy Range("F3:G" & lngZ)
For zz = 2 To lngZ
If Cells(zz, 6) Or Cells(zz, 7) Then
Else
If rngDel Is Nothing Then
Set rngDel = Cells(zz, 1)
Else
Set rngDel = Union(rngDel, Cells(zz, 1))
End If
End If
Next zz
If Not rngDel Is Nothing Then rngDel.EntireRow.Delete
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
Ergänzung
02.05.2012 16:11:16
Erich
Hi Micha,
ein
Columns("F:G").ClearContents
am Ende des Codes könnte nicht schaden...
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
AW: Ergänzung
02.05.2012 16:21:35
Micha
Hi Erich,
Super, funktioniert soweit Prima.
Mal schauen wie ich das jetzt noch auf die Original Datentabelle umgestrubbelt hinbekomme.
Kannst Du den Code eventuell noch kommentieren, damit ich etwas lerne?
1.000 Dank und liebe Grüße
Micha
konkrete Fragen?
02.05.2012 18:32:16
Erich
Hi,
danke für deine Rückmeldung!
Der Code ist IMHO eigentlich schon sehr kurz und sprechend.
Sicher könnte ich einige Kommentare reinschreiben, wüsste dabei aber nicht, ob das etwas bringt.
Ich kenne deine Voraussetzungen nicht. Was ist dir eh schon klar, was nicht?
Wie ist es z. B. mit den Excel-Matrix-Formeln in F:G?
Gern versuche ich, einzelne konkrete Fragen zum Code zu beantworten, die du mir stellst. :-)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: konkrete Fragen?
04.05.2012 07:43:49
Micha
Hallo Erich,
vielen Dank für Deine Hilfe.
Ich habe mich inzwischen ein wenig in das Thema Matrixformeln eingelesen.
Ich habe noch eine große Bitte.
Ist es möglich das nur in einer Zeile der früheste Start und das späteste Ende angezeigt werden?
An der Beispieldatei würde sollte das Ergebnis dann so aussehen:
Tabelle1
 ABCDE
1Vorher       
2         
3Auftrag Nr.1Auftrag Nr.2TextStartEnde
422222280000Nur mal so01.02.201202.02.2012
522222280000Test01.02.201203.02.2012
622222280000Hallo02.02.201204.02.2012
722222280000Test203.02.201205.02.2012
822222280000Stefan02.02.201207.02.2012
92222229999Mario01.02.201202.02.2012
102222229999Müller01.02.201203.02.2012
112222229999Kurt02.02.201204.02.2012
121234522222Start01.04.201202.04.2012
131234522222Löschen02.04.201203.04.2012
141234522222Löschen03.04.201204.04.2012
151234522222Löschen04.04.201205.04.2012
161234522222Ende05.04.201206.04.2012
17         
18         
19Nachher       
20         
21Auftrag Nr.1Auftrag Nr.2TextStartEnde
2222222280000Nur mal so01.02.201207.02.2012
232222229999Mario01.02.201204.02.2012
241234522222Start01.04.201206.04.2012
25         
26         

Tabellendarstellung in Foren Version 5.47


Würde mich riesig freuen wenn du mir noch einmal helfen könntest!
Besten Gruß
Micha
Anzeige
neues Makro mit Dictionary
04.05.2012 11:33:20
Erich
Hi Micha,
nur eine kleine(?) Änderung in der Aufgabenstellung - und eine große in der Prozedur.
Probier mal:

Option Explicit
Sub MinMax()
Dim oDic As Object, arQ, zz As Long, strK As String, arZ, ii As Long
Set oDic = CreateObject("Scripting.Dictionary")
arQ = ActiveSheet.Cells(1, 1).CurrentRegion
For zz = 2 To UBound(arQ)
strK = arQ(zz, 1) & "|" & arQ(zz, 2)      ' Key aus Sp. A und B
If oDic.Exists(strK) Then
arZ = oDic(strK)                       ' bisherige Werte
' Min/Max prüfen
If arZ(4) > arQ(zz, 4) Then arZ(3) = arQ(zz, 3): arZ(4) = arQ(zz, 4)
If arZ(5) 
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: neues Makro mit Dictionary
04.05.2012 13:25:05
Micha
Hallo Erich,
"Du bist GENIAL" ich finde es super nett das Du Dir so viel Mühe mit mir machst:-)
Funktioniert bis auf zwei (hoffentlich Kleinigkeiten) fast Perfekt:
1. Ich habe in der Originaldatei rechts der Spalte 5 noch weitere Spalten (50) die nicht gelöscht werden dürfen.
2. Klappt das auch ohne die Formatierungen zu löschen (ist aber nicht so wichtig wie Punkt 1)
1.000 Dank und ganz viele Grüße
Micha
AW: neues Makro mit Dictionary
04.05.2012 14:23:36
Erich
Hi Micha,
danke für deine Rückmeldung!
Deine beiden Punkte kannst du auf einen Schlag erledigen, indem du die Zeile mit dem Clear
ersetzt durch diese:
Cells(2, 1).Resize(UBound(arQ), 5).ClearContents ' lösche Altdaten
(Das mit den Formaten hatte ich nur drin, weil die Schriftfarbe teilweise rot ist.)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: neues Makro mit Dictionary
07.05.2012 12:43:25
Micha
Hallo Erich,
Super, jetzt ist es Perfekt :-)
Ganz toll, welche Mühe Du dir, mit mir, gegeben hast.
Nochmal vieeelen Dank und nette Grüße
Micha

332 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige