Anzeige
Archiv - Navigation
1656to1660
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro Batchverarbeitung

Makro Batchverarbeitung
20.11.2018 11:16:50
Liliput
Hallo Zusammen
Ich habe mit dem Recorder ein Makro aufgenommen. Ausser dass es sehr langsam rechnet funktioniert es wie ich will.
Nun würde ich das Makro gerne so ausbauen, dass ich mehrere Files gleichzeitig bearbeiten kann und dass es mir als Dateien mit z.B fortlaufender Nummerierung generiert.
Gerne darf natürlich auch das Makro vereinfacht werden.
Was das Makro eigentlich macht ist Werte auf Sekundenbasis in Werte auf 5-Min-Basis umrechnet und in einem separaten File speichert.
Unten der Code vom Makro
Herzlichen Dank!!
Sub Obergrenze()
' Obergrenze Makro
Range("F2").Select
ActiveCell.FormulaR1C1 = "=CEILING(RC[-4],""0:05"")"
Range("F2").Select
Selection.AutoFill Destination:=Range("F2:F36001")
Range("F2:F36001").Select
Columns("F:F").Select
Selection.Copy
Columns("G:G").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveSheet.Range("$G$1:$G$36001").RemoveDuplicates Columns:=1, Header:= _
xlNo
Columns("F:F").Select
Columns("B:B").ColumnWidth = 24.22
Columns("B:B").Select
Selection.Copy
Columns("F:G").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("H2").Select
ActiveCell.FormulaR1C1 = "=AVERAGEIFS(C[-5],C[-2],RC[-1])"
Range("H2").Select
Selection.AutoFill Destination:=Range("H2:H36001")
Range("H2:H36001").Select
Range("J13").Select
Range("G2:H2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C3").Select
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "5min_.xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
Range("I102").Select
ActiveWindow.SmallScroll Down:=-21
Range("I82").Select
Range("H2").Select
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Batchverarbeitung
20.11.2018 12:25:32
Werner
Hallo,
hier mal Änderungen an deinem Makro. Wobei sich mir die Frage stellt, ob du tatsächlich die Formeln immer bis zur Zeile 36001 benötigt werden? Oder bis zur letzten belegten Zeile? Dann stellt sich die Frage in welcher Spalte diese letzte belegte Zeile ermittelt werden soll.
Sub Obergrenze()
Application.ScreenUpdating = False
Range("F2:F36001").FormulaR1C1 = "=CEILING(RC[-4],""0:05"")"
Columns(6).Copy
Columns(7).PasteSpecial Paste:=xlPasteValues
Columns(7).RemoveDuplicates Columns:=1, Header:=xlNo
Columns(2).ColumnWidth = 24.22
Columns(2).Copy
Columns(6).Resize(, 1).PasteSpecial Paste:=xlPasteValues
Range("H2:H36001").FormulaR1C1 = "=AVERAGEIFS(C[-5],C[-2],RC[-1])"
Range("H2:G" & Cells(Rows.Count, 7).End(xlUp).Row).Copy
Workbooks.Add
Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "5min_.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
Range("H2").Select
End Sub
Gruß Werner
Anzeige
AW: Makro Batchverarbeitung
20.11.2018 13:09:42
Liliput
Hey super. Das sieht schon mal sauberer aus! Und das mit den Anzahl Zeilen ist das Tüpfelchen auf dem i.
Ist es möglich eine Schlaufe zu machen, um mehrere Files einzulesen und fortlaufend numeriert zu speichern?
Das wäre mir eine riesen hilfe!!!
Danke im Voraus
AW: Makro Batchverarbeitung
20.11.2018 13:09:44
Liliput
Hey super. Das sieht schon mal sauberer aus! Und das mit den Anzahl Zeilen ist das Tüpfelchen auf dem i.
Ist es möglich eine Schlaufe zu machen, um mehrere Files einzulesen und fortlaufend numeriert zu speichern?
Das wäre mir eine riesen hilfe!!!
Danke im Voraus
AW: Makro Batchverarbeitung
22.11.2018 05:40:22
Werner
Hallo,
dann mal noch ein paar Infos:
1. Du hast meine Frage nicht beantwortet. In welcher Spalte kann die letzte belegte Zeile ermittelt werden?
2. Welche Files sollen denn geöffnet und die Daten ausgelesen werden?
---Alle Files in einem bestimmten Ordner?
---Wenn ja: Gibt es in diesem Ordner nur diese Files oder sind da auch noch andere drin, die nicht ---ausgelesen werden?
---Oder bestimmte Files, die du irgendwo in deinem Zielblatt auflistest?
---Wie ist der Pfad zu den Dateien die geöffnet u. ausgelesen werden müssen?
---Am sinnvollsten/einfachsten wäre es, wenn die im gleichen Verzeichnis liegen sie die Zieldatei.
Gruß Werner
Anzeige
AW: Makro Batchverarbeitung
20.11.2018 12:54:06
UweD
Hallo
so?
Sub Obergrenze()
    Dim LR As Long, TB, WB
    
    Set TB = ActiveSheet
    
    With TB
    
        LR = 36001
        'oder LR = .Cells(.Rows.Count, "B").End(xlUp).Row 
        
        .Range("F2").Resize(LR, 1).FormulaR1C1 = "=CEILING(RC[-4],""0:05"")"
        .Range("G2").Resize(LR, 1).Value = .Range("F2").Resize(LR, 1).Value
        .Range("G2").Resize(LR, 1).RemoveDuplicates Columns:=1, Header:=xlNo
        .Columns("B:B").ColumnWidth = 24.22
        
        .Columns("B:B").Copy
        .Columns("F:G").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        .Range("H2").Resize(LR, 1).FormulaR1C1 = "=AVERAGEIFS(C[-5],C[-2],RC[-1])"
    
        LR = .Cells(.Rows.Count, "G").End(xlUp).Row
        Set WB = Workbooks.Add
        WB.Sheets(1).Cells(2, 1).Resize(LR, 2).Value = .Range("G2").Resize(LR, 2).Value
    
        WB.SaveAs Filename:=ThisWorkbook.Path & "\" & "5min_.xlsx" _
            , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        ActiveWindow.Close
        .Range("H2").Select
    End With
End Sub


LG UweD
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige