Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Daten aus Excel-Tabelle extrahieren und in neue Tabelle einfügen

Frage Microsoft Microsoft Office

Mitglied: mvh1989

mvh1989 (Level 1) - Jetzt verbinden

16.07.2013, aktualisiert 23:35 Uhr, 4102 Aufrufe, 7 Kommentare

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
Mitglied: colinardo
17.07.2013 um 09:40 Uhr
Hallo Michael,
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
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)

01.
Sub CreateTable() 
02.
    Dim ws1 As Worksheet, ws2 As Worksheet, zeile_tbl1 As Range, zeile_tbl2 As Range 
03.
    Set ws1 = Worksheets("Tabelle1") 
04.
    Set ws2 = Worksheets("Tabelle2") 
05.
    Set zeile_tbl1 = ws1.Range("A2") 
06.
    Set zeile_tbl2 = ws2.Range("A2") 
07.
 
08.
    Do While zeile_tbl1.Value <> "" 
09.
        If zeile_tbl1.Offset(0, 1).Text = "REGULAR" Then 
10.
            zeile_tbl2.Value = zeile_tbl1.Offset(1, 0).Value 
11.
            zeile_tbl2.Offset(0, 1).Value = "REGULAR" 
12.
            zeile_tbl2.Offset(0, 2).Value = zeile_tbl1.Offset(0, 2).Value 
13.
            zeile_tbl2.Offset(0, 3).Value = zeile_tbl1.Offset(0, 3).Value 
14.
            zeile_tbl2.Offset(0, 4).FormulaLocal = "=" & zeile_tbl2.Offset(0, 2).Address & " * " & zeile_tbl2.Offset(0, 3).Address 
15.
            Set zeile_tbl1 = zeile_tbl1.Offset(1, 0) 
16.
            Set zeile_tbl2 = zeile_tbl2.Offset(1, 0) 
17.
        ElseIf zeile_tbl1.Offset(0, 1).Text = "OVERTIME" Then 
18.
            zeile_tbl2.Value = zeile_tbl1.Value 
19.
            zeile_tbl2.Offset(0, 1).Value = "OVERTIME" 
20.
            zeile_tbl2.Offset(0, 2).Value = zeile_tbl1.Offset(0, 2).Value 
21.
            zeile_tbl2.Offset(0, 3).Value = zeile_tbl1.Offset(0, 3).Value 
22.
            zeile_tbl2.Offset(0, 4).FormulaLocal = "=" & zeile_tbl2.Offset(0, 2).Address & " * " & zeile_tbl2.Offset(0, 3).Address 
23.
            Set zeile_tbl1 = zeile_tbl1.Offset(1, 0) 
24.
            Set zeile_tbl2 = zeile_tbl2.Offset(1, 0) 
25.
        Else 
26.
            Set zeile_tbl1 = zeile_tbl1.Offset(1, 0) 
27.
        End If 
28.
    Loop 
29.
    zeile_tbl2.Offset(1, 0).Value = "Summe:" 
30.
    zeile_tbl2.Offset(1, 2).FormulaLocal = "=Summe(" & ws2.Range("C2").Address & ":" & zeile_tbl2.Offset(-1, 2).Address & ")" 
31.
    zeile_tbl2.Offset(1, 4).FormulaLocal = "=Summe(" & ws2.Range("E2").Address & ":" & zeile_tbl2.Offset(-1, 4).Address & ")" 
32.
End Sub
Grüße Uwe
gelöste Beitrage bitte auch als solche markieren.Danke
Bitte warten ..
Mitglied: mvh1989
17.07.2013 um 15:24 Uhr
Wow das sieht schonmal sehr hilfreich aus.
Allerdings fehlen da dann doch noch ein paar Informationenum einiges komplexer ist und noch viele andere Werte beinhaltet.

1. Das Muster ist allerdings, dass die benötigten Werte immer gleich um die Worte "REGULAR" und "OVERTIME" positioniert sind (deshalb z.B. Zeile i+1).

2. In Spalte B für die Art in Tabelle 1 stehen neben "REGULAR" und "OVERTIME" auch noch andere Werte (z.B. "Pay Total:"), daher hatte ich mir die Kontruktion über die Wenn-Dann-Abfrage überlegt.

Vielen Dank schonmal für deine grandiose Hilfe Uwe!!!
Bitte warten ..
Mitglied: mvh1989
18.07.2013 um 16:24 Uhr
Keine Idee dazu?
Bitte warten ..
Mitglied: colinardo
18.07.2013 um 19:08 Uhr
lad mal eine Beispieltabelle hoch und Schick den Link via PM ...dann sparen wir uns hier Missverständnisse...
G. Uwe
Bitte warten ..
Mitglied: mvh1989
18.07.2013 um 20:24 Uhr
so geschehen
Bitte warten ..
Mitglied: colinardo
24.07.2013, aktualisiert um 08:21 Uhr
Da dein Wunschscript nun funktioniert, markiere den Beitrag noch als gelöst Merci.
Grüße Uwe
Bitte warten ..
Mitglied: mvh1989
24.07.2013 um 15:33 Uhr
Danke nochmal
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Microsoft Office
Word Dokument (vorausgefüllte Formulare) aus Excel Tabelle generieren (1)

Frage von Server4Alle zum Thema Microsoft Office ...

VB for Applications
gelöst Beim Bestätigen einer Zelle automatisch zwei neue Zeilen einfügen (5)

Frage von striding zum Thema VB for Applications ...

Server
gelöst SQL-Tabelle portieren und dabei Daten konvertieren (1)

Frage von menace zum Thema Server ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...