2.9k Aufrufe
Gefragt in WindowsXP von ruffel222 Einsteiger_in (29 Punkte)
Hallo zusammen, ich arbeite derzeit zur erleichterung, bzw. versuche es mit makros zu arbeiten, oft arbeite ich einfach nur mit kopie paste und versuche es dann auf mich umzuschreiben, da ich nur noch dieses eine mal ein makro schreiben muss, hoffe ich auf eure hilfe.

Ich müsste aus der Exceldatei, alle Datensätze welche beginnen mit (also spalte A)

- die ein "80% Wert =" beinhalten (also das in der A steht)
- Anfang Prüfliste
- Material-nummer (außer in den ersten 2 Zeilen)
- Ekg
- Metallabschlag pro ESN Interval.
- Bukr
- Anfang Verarbeitungsliste

löschen!

das ist doch per makro möglich? kann mir hier jmd helfen?
Vielen lieben Dank und Grüße auf Bayern :)

14 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

leider unverständlich was du da machen willst, ich habe nur kapiert was löschen.

http://www.file-upload.net/?why=1ersuch es mal mit einer Beispieltabelle

www.file-upload.net/?why=1

und den Link hier hinterlegen

Gruß

Helmut
0 Punkte
Beantwortet von ruffel222 Einsteiger_in (29 Punkte)
habe dir im pager geantwortet!
danke!
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

du solltest die Frage bei der Gruppe Tabellenkalkulation posten :-).

Versuch mal das folgende Makro:

Sub loeschen()

Dim l, zeile As Long

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

For zeile = 2 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

If Left(Cells(zeile, 1), 10) = "80% Wert =" Then l = 1
If Left(Cells(zeile, 1), 17) = "Anfang Prüfliste" Then l = 1
If Left(Cells(zeile, 1), 15) = "Material-nummer" Then l = 1
If Left(Cells(zeile, 1), 3) = "Ekg" Then l = 1
If Left(Cells(zeile, 1), 31) = "Metallabschlag pro ESN Interval" Then l = 1
If Left(Cells(zeile, 1), 4) = "Bukr" Then l = 1
If Left(Cells(zeile, 1), 25) = "Anfang Verarbeitungsliste" Then l = 1

If l = 1 Then Cells(zeile, 1).EntireRow.Delete xlShiftUp
l = 0

Next zeile

'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True

End Sub


Aber versuch es erst einmal in einer Testdatei.

Gruß

M.O.
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

hier das verbesserte Makro:

Sub loeschen()

Dim l, zeile As Long

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

For zeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row To 2 Step -1

If Left(Cells(zeile, 1), 10) = "80% Wert =" Then l = 1
If Left(Cells(zeile, 1), 17) = "Anfang Prüfliste" Then l = 1
If Left(Cells(zeile, 1), 15) = "Material-nummer" Then l = 1
If Left(Cells(zeile, 1), 3) = "Ekg" Then l = 1
If Left(Cells(zeile, 1), 31) = "Metallabschlag pro ESN Interval" Then l = 1
If Left(Cells(zeile, 1), 4) = "Bukr" Then l = 1
If Left(Cells(zeile, 1), 25) = "Anfang Verarbeitungsliste" Then l = 1

If l = 1 Then Cells(zeile, 1).EntireRow.Delete xlShiftUp
l = 0

Next zeile

'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von ruffel222 Einsteiger_in (29 Punkte)
Hallo M.O.

jetzt hat er leider das 80 % ueberall nicht gelöscht und Material-nummer überall gelöscht auch das in der 2. Zeile, das eigentl. stehen bleiben sollte.
Ich freu mich schon auf den Excelkurs, scheint ein spannendes Thema zu sein!
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

ändere

For zeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row To 2 Step -1


in

For zeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row To 3 Step -1


Dann wird nur ab Zeile 3 gelöscht.

Warum er die Zeilen mit "80% Wert =" nicht löscht, kann ich ohne Beispieldatei nicht nachvollziehen, wahrscheinlich ist in deiner Tabelle ein Leerzeichen mehr oder weniger, oder .....

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo hier der Link zur Beispieldatei, hierzu gehoert auch die andere Frage die ich im Forum gestellt habe

http://www.file-upload.net/download-7206084/Kopie-von-Neu-Microsoft-Excel-Worksheet--3-.xls.html

Viele Grüße
Benjamin
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Benjamin,

hier das angepasste Makro:

Sub loeschen()

Dim l, zeile As Long

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

For zeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row To 3 Step -1

If InStr(1, Cells(zeile, 1).Text, "80% Wert =") > 0 Then l = 1
If Left(Cells(zeile, 1), 17) = "Anfang Prüfliste" Then l = 1
If Left(Cells(zeile, 1), 15) = "Material-nummer" Then l = 1
If Left(Cells(zeile, 1), 3) = "Ekg" Then l = 1
If Left(Cells(zeile, 1), 31) = "Metallabschlag pro ESN Interval" Then l = 1
If Left(Cells(zeile, 1), 4) = "Bukr" Then l = 1
If Left(Cells(zeile, 1), 25) = "Anfang Verarbeitungsliste" Then l = 1

If l = 1 Then Cells(zeile, 1).EntireRow.Delete xlShiftUp
l = 0

Next zeile

'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True

End Sub

Da vor " 80% Wert =" noch einige Leerzeichen stehen, konnte das Makro nicht diese Zeilen löschen. Daher ist eine Beispieltabelle immer gut :-).

Gruß

M.O.
0 Punkte
Beantwortet von ruffel222 Einsteiger_in (29 Punkte)
die Beispieltabelle befindet sich in dem Link über deiner Antwort :)
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Benjamin,

das weiß ich ;-). Das mit der Beispieltabelle war auch nur für deine nächste Anfrage gedacht ;-).

Gruß

M.O.
...