19.2k Aufrufe
Gefragt in WindowsXP von exceluser91 Mitglied (103 Punkte)
Hallo und feinen Nachmittag zusammen,

ich bin derzeit in der Arbeit als Werkstudent mit einem Project involviert.
Excel!

Um einen schnelleren Arbeitsfluss zu ermöglichen, sollten manche Vorgänge per Makros funktionieren..
Jetzt zu der Aufgabe und ich hoffe ihr könnt mir helfen sonst, bin ich verloren^^

1. Jedes Monat werden aus einer txt datei ( monatl. wird eine neue txt datei angelegt) die Daten in eine Excel-datei eingelesen.
kann man dafür ein Makro erstellen?


2. Die Lasche "Tabelle 1" sollte sich per Makro in "Reichweite" umändern lassen, ebenso sollte gleichzeitig dann eine neue Lasche mit Titel "Summe" zusätzlich hinzugefügt werden.

3, Per Makro: Aus der oben genannten txt (oder aus der fertig importierten) müssen dann, alle Zeilen ausgeschnitten, welche in der Spalte C "Summe" stehen haben und in das erstellte Tabellenblatt "Summe" eingefügt werden.

4. Per Makro würde ich dann gerne alle leeren Zeilen, sowie Zeilen
welche doppelt genannt werden löschen, außer in der ersten Zeile, Quasi eine Doppelnennung dieser Zeile vermeiden!

Test Inventur: Reichweiten-/Abwertsatzermittlung 02.10.2012 10:59:25 Seite: 2

das 5. und letzte Makro

a)Spalte einfügen in das erste Tabellenblatt mit dem Namen "Dispo_Name"
b) Spalte löschen WFG


Ob mir hier jmd helfen kann, das wäre der Knüller!
Leider habe ich erst ab kommenden März eine Excel spezifische Weiterbildung in meiner Uni.. und leisten kann ich Sie mir bis dato schwer!
Vielen vielen Dank im voraus und ich freue mich über jede produktive Antwort!

Viele Grüße
Ben

81 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Benjamin,

wie sieht denn der Text aus, in welcher Spalte steht der Text, gibt es eine Trennung zu den Daten aus deiner Antwort 56? Ohne entsprechende Angaben ist es schwierig per Makro eine Lösung zu finden.

Gruß

M.O.
0 Punkte
Beantwortet von exceluser91 Mitglied (103 Punkte)
hab dir eine Pn geschrieben :)
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Benjamin,

ich werde mal sehen, was ich machen kann.

Gruß

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

versuch mal dieses Makro:

Sub kopieren_loeschen_neu6_1()

Dim anfang, ende, zeile, lzeile, szeile As Integer

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

'letzte Zeile im aktiven Arbeitsblatt "Reichweite" ermitteln
lzeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

'Anfang des zu kopierenden Bereichs suchen: zwei Zeilen untereinander mit ---
For zeile = 6 To lzeile
If Left(ActiveSheet.Cells(zeile, 1).Value, 1) = "-" And Left(ActiveSheet.Cells(zeile - 1, 1).Value, 1) = "-" Then
anfang = zeile + 1
Exit For
End If
Next zeile

For zeile = 6 To lzeile
'Gesamtsumme
If Left(ActiveSheet.Cells(zeile, 3).Value, 11) = "Gesamtsumme" Then
ende = zeile
Exit For
End If
Next zeile

For zeile = ende To lzeile
'Trennlinie nach Gesamtsumme suchen
If Left(ActiveSheet.Cells(zeile, 1).Value, 1) = "-" Then
ende = zeile
Exit For
End If
Next zeile


'gefundenen Bereich kopieren
ActiveSheet.Range(Cells(anfang, 1), Cells(ende, 1)).EntireRow.Copy Destination:=Worksheets("Summe").Cells(1, 1)

'Nun alle nicht benötigten Zeilen löschen
'Löschen von rückwärts
For zeile = lzeile To 6 Step -1
'alle Zeilen, die hinter Gesamtsumme stehen werden gelöscht
If zeile >= ende Then ActiveSheet.Rows(zeile).Delete

'Alle Zeilen mit Summe löschen
If Left(ActiveSheet.Cells(zeile, 3).Value, 5) = "Summe" Then ActiveSheet.Rows(zeile).EntireRow.Delete

'leere Zeilen löschen
With ActiveSheet.Range(Cells(zeile, 1), Cells(zeile, 19))
If Application.WorksheetFunction.CountBlank(.Cells) = .Cells.Count Then
Rows(zeile).EntireRow.Delete
End If
End With

'Zeilen, die mit - beginnen werden gelöscht
If Left(ActiveSheet.Cells(zeile, 1).Value, 1) = "-" Then ActiveSheet.Rows(zeile).EntireRow.Delete

'Zellen in denen in Spalte A keine Zahl steht werden gelöscht
If Not IsNumeric(ActiveSheet.Cells(zeile, 1)) Then ActiveSheet.Rows(zeile).EntireRow.Delete

'Zellen mit Leerzeichen in Spalte A werden gelöscht
If IsNumeric(ActiveSheet.Cells(zeile, 1)) And ActiveSheet.Cells(zeile, 1).Value = 0 Then ActiveSheet.Rows(zeile).EntireRow.Delete

Next zeile

'Spalte 2 mit WFG löschen
Sheets("Summe").Columns(2).Delete Shift:=xlToLeft

'Im Blatt Summe alle Zeilen löschen, die mit -, A, D oder S anfagen
For zeile = Worksheets("Summe").UsedRange.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
If Left(Worksheets("Summe").Cells(zeile, 1).Value, 1) = "-" Then Worksheets("Summe").Rows(zeile).EntireRow.Delete
If Left(Worksheets("Summe").Cells(zeile, 1).Value, 1) = "A" Then Worksheets("Summe").Rows(zeile).EntireRow.Delete
If Left(Worksheets("Summe").Cells(zeile, 1).Value, 1) = "D" Then Worksheets("Summe").Rows(zeile).EntireRow.Delete
If Left(Worksheets("Summe").Cells(zeile, 1).Value, 1) = "S" Then Worksheets("Summe").Rows(zeile).EntireRow.Delete
'Zeilen löschen, in denen in Spalte I die Buchstaben AS stehen
If Left(Worksheets("Summe").Cells(zeile, 9).Value, 2) = "AS" Then Worksheets("Summe").Rows(zeile).EntireRow.Delete
'Zeilen mit Angaben zum Programmablauf löschen
If Left(Worksheets("Summe").Cells(zeile, 1).Value, 6) = "System" Then Worksheets("Summe").Range(Cells(zeile, 1), Cells(Worksheets("Summe").UsedRange.SpecialCells(xlCellTypeLastCell).Row, 1)).EntireRow.Delete

Next zeile

'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von
Hallo ich werde es mir heute oder morgen ansehen, hatte leider viel zutun in letzter zeit!
0 Punkte
Beantwortet von
Laufzeitfehler 1004
Anwendungs -der objektdefinierter Fehler

nach debuggen:
gelb -> If Left(ActiveSheet.Cells(zeile, 1).Value, 1) = "-" Then
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

ich kann den Fehler leider nicht nachvollziehen. In deiner Beispieldatei läuft das Makro einwandfrei.

Gruß

M.O.
0 Punkte
Beantwortet von
Hi okay,
ich seh grad es funktioniert, aber exakt wie das vorgängermakro
Sprich die Überschriften von Zeile 1-5 sind noch vorhanden und das was ich dir gesendet habe, wird immer kopiert und gaaaanz weit unten in Zeile 9xxx
in die Summe kopiert.
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

kannst du mir mal eine Datei zur Verfügung stellen, in der nur die Zeilen ab Gesamtsumme dargestellt sind, damit ich mal
sehen kann, wie das im Orginal aussieht.
Bei der Beispieldatei funktioniert das Löschen des Bereichs mit den nicht benötigten Informationen nach Gesamtsumme.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo,
ich werde das heute Nachmittag mal in Angriff nehmen :)
viel zutun derzeit!
...