Daten aus Excel-Tabelle extrahieren und in neue Tabelle einfügen
Hallo zusammen,
zuerst einmal muss ich zugeben, dass ich bisher in Excel nur mit Formeln, nie aber mit Makros gearbeitet habe. Nun habe ich leider ein Projekt vorliegen, bei dem ich nicht drum herum kommen werde.
Ich muss aus einer Excel-Tabelle verschiedene Datengruppen extrahieren und eine neue Tabelle kreieren, die Folgendes beinhaltet:
Name Art Stunden Stundenlohn Gesamtbetrag
Dabei gibt es 2 Arten von Löhnen: REGULAR und OVERTIME (für Überstunden).
Die Daten sind dabei immer in Gruppen gleich positioniert, sodass ich mir mit meinen beschränkten Informatik-Kenntnissen folgendes Konzept überlegt habe:
(
Angaben zu Tabelle1:
Spalte A: Name
Spalte B: Art
Spalte C: Stunden
Spalte D: Stundenlohn
Spalte E: Gesamtbetrag
)
for i=1 to "letzte gefüllte Zeile der Tabelle1 (dynamisch/unbekannt)"
{
WENN
Tabelle1.Zeile i/Spalte B = "REGULAR"
DANN
create neue Zeile in Tabelle2
MIT
Tabelle2.Spalte A = Tabelle1.SpalteA/Zeile i+1
Tabelle2.Spalte B = REGULAR
Tabelle2.Spalte C = Tabelle1.Spalte C/Zeile i
Tabelle2.Spalte D = Tabelle1.Spalte D/Zeile i
Tabelle2.Spalte E = Spalte C * Spalte D
WENN
Zeile i.Spalte B = "OVERTIME"
DANN
create neue Zeile in Tabelle2
MIT
Tabelle2.Spalte A = Tabelle1.SpalteA/Zeile i
Tabelle2.Spalte B = OVERTIME
Tabelle2.Spalte C = Tabelle1.Spalte C/Zeile i
Tabelle2.Spalte D = Tabelle1.Spalte D/Zeile i
Tabelle2.Spalte E = Spalte C * Spalte D
}
LEERZEILE
"dann unter der Tabelle:"
Tabelle2.Spalte A = SUMME
Tabelle2.Spalte C = "Summe aller Werte in Spalte C"
Tabelle2.Spalte E = "Summe aller Werte in Spalte E"
1. Funktioniert das so?
2. Es wäre mehr als super wenn mir jemand dabei Hilfestellung geben könnte (Quelltext wäre phänomenal), weil mein Chef mir deshalb schon total im Nacken hängt und ich ehrlich gesagt ziemlich verloren bin
VIELEN VIELEN VIELEN DANK schonmal im Voraus für eure Hilfe!!!
Gruß
Michael
zuerst einmal muss ich zugeben, dass ich bisher in Excel nur mit Formeln, nie aber mit Makros gearbeitet habe. Nun habe ich leider ein Projekt vorliegen, bei dem ich nicht drum herum kommen werde.
Ich muss aus einer Excel-Tabelle verschiedene Datengruppen extrahieren und eine neue Tabelle kreieren, die Folgendes beinhaltet:
Name Art Stunden Stundenlohn Gesamtbetrag
Dabei gibt es 2 Arten von Löhnen: REGULAR und OVERTIME (für Überstunden).
Die Daten sind dabei immer in Gruppen gleich positioniert, sodass ich mir mit meinen beschränkten Informatik-Kenntnissen folgendes Konzept überlegt habe:
(
Angaben zu Tabelle1:
Spalte A: Name
Spalte B: Art
Spalte C: Stunden
Spalte D: Stundenlohn
Spalte E: Gesamtbetrag
)
for i=1 to "letzte gefüllte Zeile der Tabelle1 (dynamisch/unbekannt)"
{
WENN
Tabelle1.Zeile i/Spalte B = "REGULAR"
DANN
create neue Zeile in Tabelle2
MIT
Tabelle2.Spalte A = Tabelle1.SpalteA/Zeile i+1
Tabelle2.Spalte B = REGULAR
Tabelle2.Spalte C = Tabelle1.Spalte C/Zeile i
Tabelle2.Spalte D = Tabelle1.Spalte D/Zeile i
Tabelle2.Spalte E = Spalte C * Spalte D
WENN
Zeile i.Spalte B = "OVERTIME"
DANN
create neue Zeile in Tabelle2
MIT
Tabelle2.Spalte A = Tabelle1.SpalteA/Zeile i
Tabelle2.Spalte B = OVERTIME
Tabelle2.Spalte C = Tabelle1.Spalte C/Zeile i
Tabelle2.Spalte D = Tabelle1.Spalte D/Zeile i
Tabelle2.Spalte E = Spalte C * Spalte D
}
LEERZEILE
"dann unter der Tabelle:"
Tabelle2.Spalte A = SUMME
Tabelle2.Spalte C = "Summe aller Werte in Spalte C"
Tabelle2.Spalte E = "Summe aller Werte in Spalte E"
1. Funktioniert das so?
2. Es wäre mehr als super wenn mir jemand dabei Hilfestellung geben könnte (Quelltext wäre phänomenal), weil mein Chef mir deshalb schon total im Nacken hängt und ich ehrlich gesagt ziemlich verloren bin
VIELEN VIELEN VIELEN DANK schonmal im Voraus für eure Hilfe!!!
Gruß
Michael
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 211643
Url: https://administrator.de/forum/daten-aus-excel-tabelle-extrahieren-und-in-neue-tabelle-einfuegen-211643.html
Ausgedruckt am: 20.05.2025 um 05:05 Uhr
7 Kommentare
Neuester Kommentar
Hallo Michael,
also so wie du das geschildert hast sind die zwei Tabellen eigentlich identisch bis auf die Zusammenfassung darunter und diese Zeile:
womit der Name der aus der nächsten Zeile aus Tabelle 1 übernommen wird.
dafür braucht es doch kein Makro, da langen doch Formeln ....
oder Fehlen mir da noch irgendwelche Informationen wie z.B. das Spalte B auch andere Werte als "REGULAR" und "OVERTIME" haben kann ?
wenn du unbedingt ein Makro dafür brauchst:
nach deinen Angaben geht folgendes Script
(habe bei den Tabellen die Überschriften berücksichtigt, die Daten fangen also erst in Zeile 2 an;
Die Tabellennblattnamen musst du in Zeile 3 und 4 noch an deine Gegebenheiten anpassen)
Grüße Uwe
gelöste Beitrage bitte auch als solche markieren.Danke
also so wie du das geschildert hast sind die zwei Tabellen eigentlich identisch bis auf die Zusammenfassung darunter und diese Zeile:
Tabelle2.Spalte A = Tabelle1.SpalteA/Zeile i+1
dafür braucht es doch kein Makro, da langen doch Formeln ....
oder Fehlen mir da noch irgendwelche Informationen wie z.B. das Spalte B auch andere Werte als "REGULAR" und "OVERTIME" haben kann ?
wenn du unbedingt ein Makro dafür brauchst:
nach deinen Angaben geht folgendes Script
(habe bei den Tabellen die Überschriften berücksichtigt, die Daten fangen also erst in Zeile 2 an;
Die Tabellennblattnamen musst du in Zeile 3 und 4 noch an deine Gegebenheiten anpassen)
Sub CreateTable()
Dim ws1 As Worksheet, ws2 As Worksheet, zeile_tbl1 As Range, zeile_tbl2 As Range
Set ws1 = Worksheets("Tabelle1")
Set ws2 = Worksheets("Tabelle2")
Set zeile_tbl1 = ws1.Range("A2")
Set zeile_tbl2 = ws2.Range("A2")
Do While zeile_tbl1.Value <> ""
If zeile_tbl1.Offset(0, 1).Text = "REGULAR" Then
zeile_tbl2.Value = zeile_tbl1.Offset(1, 0).Value
zeile_tbl2.Offset(0, 1).Value = "REGULAR"
zeile_tbl2.Offset(0, 2).Value = zeile_tbl1.Offset(0, 2).Value
zeile_tbl2.Offset(0, 3).Value = zeile_tbl1.Offset(0, 3).Value
zeile_tbl2.Offset(0, 4).FormulaLocal = "=" & zeile_tbl2.Offset(0, 2).Address & " * " & zeile_tbl2.Offset(0, 3).Address
Set zeile_tbl1 = zeile_tbl1.Offset(1, 0)
Set zeile_tbl2 = zeile_tbl2.Offset(1, 0)
ElseIf zeile_tbl1.Offset(0, 1).Text = "OVERTIME" Then
zeile_tbl2.Value = zeile_tbl1.Value
zeile_tbl2.Offset(0, 1).Value = "OVERTIME"
zeile_tbl2.Offset(0, 2).Value = zeile_tbl1.Offset(0, 2).Value
zeile_tbl2.Offset(0, 3).Value = zeile_tbl1.Offset(0, 3).Value
zeile_tbl2.Offset(0, 4).FormulaLocal = "=" & zeile_tbl2.Offset(0, 2).Address & " * " & zeile_tbl2.Offset(0, 3).Address
Set zeile_tbl1 = zeile_tbl1.Offset(1, 0)
Set zeile_tbl2 = zeile_tbl2.Offset(1, 0)
Else
Set zeile_tbl1 = zeile_tbl1.Offset(1, 0)
End If
Loop
zeile_tbl2.Offset(1, 0).Value = "Summe:"
zeile_tbl2.Offset(1, 2).FormulaLocal = "=Summe(" & ws2.Range("C2").Address & ":" & zeile_tbl2.Offset(-1, 2).Address & ")"
zeile_tbl2.Offset(1, 4).FormulaLocal = "=Summe(" & ws2.Range("E2").Address & ":" & zeile_tbl2.Offset(-1, 4).Address & ")"
End Sub
Grüße Uwe
gelöste Beitrage bitte auch als solche markieren.Danke
Da dein Wunschscript nun funktioniert, markiere den Beitrag noch als gelöst Merci.
Grüße Uwe
Grüße Uwe