Jahr und Name aus String auslesen

Bild

Betrifft: Jahr und Name aus String auslesen
von: snuhhh
Geschrieben am: 15.10.2015 14:14:48

Hallo zusammen!
Ich habe folgendes Anliegen:
Ich möchte einen Datensatz bestehend aus verschiedenen Daten von Firmen aus verschiedenen Jahren aufbauen. Dafür stehen mir pro Firma eine xls. Arbeitsmappe mit jeweils zwischen 10-12 Jahren an Daten zur Verfügung. Pro Arbeitsblatt in der Mappe sind 2 aufeinanderfolgende Jahre der Firma an Daten vorhanden. Dabei sind die verschiendenen Datenspalten ("Merkmale" im Screenshot) immer gleich, unterscheiden sich aber innerhalb der Jahre durch unterschiedlich viele Zeilen (zwischen 4 und 12 Zeilen pro Jahr/Firma). Für ein besseres Verständnis, hier mal eine kleine Skizze eines Reiters:
http://www.file-upload.net/download-10974109/Beispiel_DL.JPG.html
Um diese Datenzeilen also in eine andere Datei schlüsseln zu können, benötige ich vor jede Zeile 1. eine Spalte mit dem Firmennamen und 2. das entsprechende Jahr; und das über alle Blätter hinweg.
Ich muss also das jeweilige Jahr (D9 im Bsp.) und den Namen (D3 im Bsp.) aus den Zellen auslesen und neben die Zeilen kopieren. Ich denke, dies geht mit regulären Ausdrücken, bin aber ziemlicher Anfänger im VBA-Bereich; vielleicht kann mir jemand hierbei helfen?
Schwieriger sehe ich die Tatsache, dass es pro Jahr nicht immer gleich viele Zeilen gibt. Ich möchte ja, dass das zweite Jahr in einem Reiter in irgendeiner Form erkannt wird, und dort das richtige Jahr steht. (im Beispiel: ab C19 soll 2013 stehen, da hier ja ein neues Jahr beginnt)
Anbei eine Datei mit einem ersten Makro, welches bisher nur in jedem Arbeitsblatt 2 Spalten links hinzufügt, damit hier die Jahres- und Firmenschlüssel hinzugefügt werden können.
https://www.herber.de/bbs/user/100811.xlsm

Bild

Betrifft: AW: Jahr und Name aus String auslesen
von: Jack_d
Geschrieben am: 16.10.2015 11:20:21
moin moin
Hier mal mein Ansatz auf Basis der Infos die ich ermitteln konnte.
Bei Namen und Jahr orientiert sich die "extraktion" an dem Beispiel.
Als Excel Profi sollte es dir aber dann im Nachgang ein leichtes sein, die logischen Bedingungen für Jahr und Name zu definieren und auszulesen (sofern notwendig)
Grüße

Option Explicit
Sub Spalten_einfügen()
Dim i As Integer
Dim a As Integer
Dim FName As String
Dim FJahr As Integer
For i = 1 To ActiveWorkbook.Sheets.Count
With ActiveWorkbook.Sheets(i)
            
            FName = Mid(.Cells(5, 1), InStr(.Cells(5, 1), ":") + 1, InStr(.Cells(5, 1), ")") -  _
InStr(.Cells(5, 1), ":") - 1)
            Columns("A:B").Insert Shift:=xlToRight
            
            For a = 12 To .Cells(Rows.Count, 3).End(xlUp).Row
                If Left(.Cells(a, 3), 2) = "FY" Then
                    FJahr = Mid(.Cells(a, 3), 4, 4)
                    a = a + 1
                End If
                
                Do While Left(.Cells(a, 3), 2) <> "FY" And a < .Cells(Rows.Count, 3).End(xlUp). _
Row
                    a = a + 1
                        If .Cells(a, 3) <> "" And Left(.Cells(a, 3), 2) <> "FY" And Left(.Cells( _
a, 3), 7) <> "Merkmal" Then
                            .Cells(a, 1) = FName
                            .Cells(a, 2) = FJahr
                        End If
                        Debug.Print a & "-"
                Loop
                    If a = .Cells(Rows.Count, 3).End(xlUp).Row Then
                    Else
                        a = a - 1
                    End If
                Debug.Print a
            Next a
End With
Next i
End Sub


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Jahr und Name aus String auslesen"