19.7k 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 exceluser91 Mitglied (103 Punkte)
Hallo M.O.

falls du zwischendrin mal Zeit hast zu schreiben,
gibt es irgendwelche Online-tutorials die einem einfach an die Grundsätze des VBA bringen,
bzw.
damit ich mich einfach von Grundauf gut einlesen, am liebsten "schauen" könnte?
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Benjamin,

wenn du eine Suchmaschine deines Vertrauens bemühst, wirst du einige Tutorials finden, wie z.B. dieses oder das hier. Auch diese Seite kannst du dir mal ansehen.

Ich habe mir aber z.B. VBA beigebracht, in dem ich mir z.B. hier im Supportnet Makros angesehen habe und dann einfach angefangen habe kleine Makros selbst zu schreiben. Bei Problemen habe ich dann das Internet bemüht :-).

Gruß

M.O.
0 Punkte
Beantwortet von exceluser91 Mitglied (103 Punkte)
ich würde sagen du bist einfach ziemlich bewandt auf diesem Gebiet.
Und das sehe ich als kleinen Ansporn, um später hoffentl. auch mal anderen zu helfen! :)
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Benjamin,

zum Kopieren und Löschen probier mal das folgende Makro aus:

Sub kopieren_loeschen()

Dim zeile, lzeile, slzeile, gszeile As Integer

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

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

'letzte Zeile im Arbeitsblatt "Summe" ermitteln
slzeile = Worksheets("Summe").UsedRange.SpecialCells(xlCellTypeLastCell).Row

'Summen suchen und kopieren außer den Summen, die zwischen den Datensätzen stehen
For zeile = 6 To lzeile
'Summen kopieren
If Left(ActiveSheet.Cells(zeile, 3).Value, 5) = "Summe" And ActiveSheet.Cells(zeile, 1) <> ActiveSheet.Cells(zeile - 1, 1) Then
slzeile = slzeile + 1
ActiveSheet.Cells(zeile, 1).EntireRow.Copy Destination:=Worksheets("Summe").Cells(slzeile, 1)
End If

'Gesamtsumme
If Left(ActiveSheet.Cells(zeile, 3).Value, 11) = "Gesamtsumme" Then
slzeile = slzeile + 1
'Hier wird die Zeile festgeschrieben, in der Gesamtsumme gefunden wurde
gszeile = zeile
ActiveSheet.Cells(zeile, 1).EntireRow.Copy Destination:=Worksheets("Summe").Cells(slzeile, 1)
End If

'Zeile mit VD kopieren
If Left(ActiveSheet.Cells(zeile, 9).Value, 2) = "VD" Then
slzeile = slzeile + 1
ActiveSheet.Cells(zeile, 1).EntireRow.Copy Destination:=Worksheets("Summe").Cells(slzeile, 1)
End If

Next zeile

'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 >= gszeile 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

'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True

End Sub


Das Problem mit dem Löschen der "leeren" Zeilen ist, dass in den ersten Spalten Leerzeiilen stehen. Deshalb werden im Makro alle Zellen gelöscht, bei denen in Spalte A keine Zahl steht, bzw. der Wert größer als Null ist (da Leerzeichen auch als Zahl = 0 gelten).
Probiere es vorsichtshalber erst einmal in einer Testdatei aus.

Gruß

M.O.
0 Punkte
Beantwortet von
Hi m.o.
Hast du eventuell schon ein Makro hinzubekommen?

Viele Grüße
Ben
0 Punkte
Beantwortet von
Grade erst gelesen, werde es am Dienstag gleich mal testen :)
0 Punkte
Beantwortet von
Hallo M.O

leider klappt wieder etwas nicht, zum einen
wird mir die Summe unvollständig rüber in die Lasche Summe kopiert.
d.h. wie ich dir als Bspdatei gesendet habe, steht bei 718 mehrere Zeilen, die im Bsp zwar leer sind jedoch
ist wie ich dir gesagt habe nur eine weiterführung der Summe
Sprich das steht dann eben vorne
und in spalte G is die Aufgliederung
Summe 1000000
45646
1254678
4545445

bei dir wird nur leider die 2. Zeile nach der Summe mitkopiert, sprich mit dem Inhalt 45646,
der Rest wird gelöscht inkl. diesen Zeilen "-----------" (was in dem Fall ja auch gelöscht werden soll)

weißt du was ich meine, es müssten also auch die weiteren Zeilen ausgeschnitten werden bis zur nächsten Zeile wo wieder
"------" diese Zeile folgt!

2)das zweite is eher geringfügig, das kopierte sollte bitte ab der Zeile 2 in der Lasche "Summe" eingefügt werden, derzeit befindet sich es dann iwo bei 10021 ;)

VIELEN VIELEN DANK!

Freundliche Grüße
Benjamin
0 Punkte
Beantwortet von
Ein Lösung meinerseits, ich habe jetzt mal die Summe einfach runtergezogen, dann kopiert es natuerliche alle mit Summe (Spalte C)
aber leider steht dann natuerlich auch ---Summe da und kopiert diese Zeile auch mit!
genauso diese zwischen überschriften mit dem dis usw. wie im beispiel gezeigt!


Bis dann :)
LG Benjamin
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Benjamin,

ich werde mir das noch mal anschauen.

Gruß

M.O.
0 Punkte
Beantwortet von
Wie ich gerade sehe kopiert er nicht nur die Summen sondern auch alle Zeilen mit Materialnummer usw.
brauche ja lediglich die Summe und Gesamtsumme :)
ich probier schon ständig rum, aber mir fehlt einfach das Fachwissen!
...