Thema Datum  Von Nutzer Rating
Antwort
08.01.2020 15:35:03 Tuncer
Solved
08.01.2020 16:56:02 tscharl
Solved
08.01.2020 18:06:52 Tuncer
Solved
08.01.2020 18:16:44 Gast60458
Solved
08.01.2020 18:21:45 tscharl
Solved
08.01.2020 21:32:53 Gast78594
Solved
08.01.2020 21:43:43 tscharl
Solved
Blau verschachtelte foreach-Schleifen
09.01.2020 12:05:32 Tuncer
Solved

Ansicht des Beitrags:
Von:
Tuncer
Datum:
09.01.2020 12:05:32
Views:
511
Rating: Antwort:
 Nein
Thema:
verschachtelte foreach-Schleifen

Yes und außerdem habe ich noch kleine Anpassungen durchgeführt, damit "fast" das gewünschte Ergebnis kommt. Statt immer wieder eine leere Zeile als Trennung zu verwenden, schneide ich den Teil ab und füge es in eine neue Tabellenblatt ein. Mit einer Anwendung aus C# mache ich dann pro Tabellenblatt eine csv-Datei.  Umständlich aber wahrscheinlich am schnellsten, da ich wirklich zum ersten Mal mit VBA, wie ihr sicherlich gemerkt habt.) 

Danke nochmal für eure Hilfe. Hier ist mein Code (nehme gerne noch Verbesserungsvorschläge an):

 

Sub Tuncer_Teil_1()
    Dim wksQuelle As Worksheet
    Dim wks As Worksheet
    Dim i As Integer
    Dim Ueberschriften(4) As String
    Dim lngLetzteZeile As Long
    Dim lngZaehler As Long
       
    ' Überschriften ins Array
        Ueberschriften(0) = "DATUM"
        Ueberschriften(1) = "STRING 1"
        Ueberschriften(2) = "STRING 2"
        Ueberschriften(3) = "STRING 3"
        Ueberschriften(4) = "STRING 4"
       
    ' Quellblatt kopieren
    Set wksQuelle = ThisWorkbook.Worksheets("Tabelle1")
    wksQuelle.Copy After:=Sheets(Sheets.Count)
       
    ' Zielblatt benennen und auswählen (ggf. unnötig)
    Sheets(Sheets.Count).Name = "Kopie"
    Set wks = Sheets("Kopie" & Sheets.Count)
    With wks
        .Select
        ' Zeilen Auswählen und nach Datum sortieren
        lngLetzteZeile = .Cells(Rows.Count, 1).End(xlUp).Row
        With .Sort
            .SortFields.Clear
            ' zunächst nach Spalte A, danach nach Splate B sortieren
            .SortFields.Add Key:=Range("A1"), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .SortFields.Add Key:=Range("B1" & lngLetzteZeile), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .SetRange Range("A2:D" & lngLetzteZeile)
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
           
        ' Zwischen den Zeilen jeder Datumsklasse
        For lngZaehler = lngLetzteZeile To 3 Step -1
            If .Cells(lngZaehler, 1).Value <> .Cells(lngZaehler - 1, 1) Or _
               .Cells(lngZaehler, 2).Value <> .Cells(lngZaehler - 1, 2) Then
                
                ' Tabellenblatt für den Import erzeugen
                Sheets.Add After:=Sheets(Sheets.Count)
                Sheets(Sheets.Count).Name = "Import" & Sheets.Count - 1
                
                ' An die richtige Stelle springen
                wks.Activate
                .Rows(lngZaehler).Select
                
                ' 1 Zeile einfügen, dabei Überschrift einsetzen
                Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                For i = 0 To 4
                    .Cells(lngZaehler, i + 1).Value = Ueberschriften(i)
                Next i

                ' Den Import in die erzeugte Tabelle hinzufügen Cut/Paste
                Range(Selection, Selection.End(xlDown)).Select
                Selection.Cut
                Sheets(Sheets.Count).Select
                Range("A1").Select
                ActiveSheet.Paste
                                
                ' Die richtige Tabelle wieder aktivieren
                wks.Activate
            End If
        Next lngZaehler
    End With
    'Kopie noch umbennen Import
    Sheets("Kopie").Name = "Import" & Sheets.Count - 1
    Set wks = Nothing
    Set wksQuelle = Nothing
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
08.01.2020 15:35:03 Tuncer
Solved
08.01.2020 16:56:02 tscharl
Solved
08.01.2020 18:06:52 Tuncer
Solved
08.01.2020 18:16:44 Gast60458
Solved
08.01.2020 18:21:45 tscharl
Solved
08.01.2020 21:32:53 Gast78594
Solved
08.01.2020 21:43:43 tscharl
Solved
Blau verschachtelte foreach-Schleifen
09.01.2020 12:05:32 Tuncer
Solved