Thema Datum  Von Nutzer Rating
Antwort
Rot Prüfung auf Mehrfacheinsatz/Erfolg
20.02.2019 15:33:37 Dennis R.
NotSolved
20.02.2019 18:37:50 Gast63380
NotSolved
21.02.2019 08:18:16 Gast59938
NotSolved
20.02.2019 18:39:47 AlterDresdner
NotSolved

Ansicht des Beitrags:
Von:
Dennis R.
Datum:
20.02.2019 15:33:37
Views:
799
Rating: Antwort:
  Ja
Thema:
Prüfung auf Mehrfacheinsatz/Erfolg

Hallo im Rahmen meiner Masterarbeit muss ich diverse Auswertungen durchführen. Ich habe dafür ein VBA Makro geschrieben, welches auch funktioniert, jedoch nur bei geringen Datenmengen. Ich bräuchte ein Makro, was genau das gleiche erledigt, jedoch in viel schnellerer Zeit. Wir reden hier von einer Laufdauer von fast 2 h bei den Datenmengen. Worum gehts?: Es geht um Einsätze an Maschinen. Jede Zeile in den Basisdaten stellt einen Einsatz da. Die Basisdaten enthalten pro jahr 150.000 Einsätze. Ich würde gerne 4 Jahre einfügen falls möglich. Es werden jedoch mindestens 1 Jahr und 1 Monat an Daten in den Basisdaten benötigt.  Über eine Eingabemaske wählt man den Auswertungszeitraum aus, und es werden aus den Basisdaten nur die Einsätze herausgefiltert, welche relevant sind. Der Auswertungszeitraum ist jedoch flexibel wählbar. In den meisten Fällen beträgt er einen Monat, was ungefähr 10-15.000 Einsätzen entpsricht.  Für jeden Einsatz der sich im Auswertungszeitraum befindet müssen 2 Prüfungen vorgenommen werden. 1. Prüfung. Ist der Einsatz im Auswertungszeitraum ein Ersteinsatz oder ein Mehrfacheinsatz. Das wird geprüft in dem man für jeden Einsatz im Auswertungszeitraum, x Tage in die Vergangenheit schaut und Prüft ob ein Einsatz an der gleichen Masschine vorgelegen hat. (Den Zeitraum für die Rückwärtsrechnung gibt man auch in der Eingabemaske ein). Die 2 Prüfung ist genau das gleiche nur das man anstatt in die Vergangenheit, in die Zukunft für einen bestimmten Zeitraum schaut. Liegt in der Zukunft ein Einsatz vor so ist der Einsatz im Auswertungszeitraum nicht erfolgreich gewesen. Ich habe eine Beispieldatei, die ich gerne zukommen lassen kann. Ich denke nicht, dass es so klar wird wenn ich den code hier darstelle: Trotzdem anbei der Code: Kurze Erklärung: Spalte 6 =Einsatzdatum Spalte 4 =Maschinennummer

Sub Filter_Data()

Dim Counter1 As Long
Dim Counter2 As Long
Dim row As Long
Dim lastrow_basis As Long

Counter1 = 2
Counter2 = 2

With Worksheets("Basisdaten")

    lastrow_basis = .Cells(Rows.Count, "A").End(xlUp).row

         For row = 2 To lastrow_basis
         
        If .Cells(row, 6).Value >= Anfang And .Cells(row, 6).Value <= Ende Then
            Sheets("Betrachtungszeitraum_klein").Range(Counter1 & ":" & Counter1).Value = . _
Range(row & ":" & row).Value
            Counter1 = Counter1 + 1
        End If
    
         If .Cells(row, 6).Value >= Anfang - Rueckwaertsdauer And .Cells(row, 6).Value <= Ende + _
 _
 Vorwaertsdauer Then
            Sheets("Betrachtungszeitraum_all").Range(Counter2 & ":" & Counter2).Value = .Range(  _
_
row & ":" & row).Value
            Counter2 = Counter2 + 1
        End If
        
    Next row

End With

End Sub


Sub Calculate1()

Dim row1 As Long
Dim row2 As Long
Dim lastrow_klein As Long
Dim lastrow_all As Long
Dim MFE As Integer
Dim Erfolg_Einsatz As Integer


lastrow_klein = Sheets("Betrachtungszeitraum_klein").Cells(Rows.Count, "A").End(xlUp).row
lastrow_all = Sheets("Betrachtungszeitraum_all").Cells(Rows.Count, "A").End(xlUp).row
MFE = 0

For row1 = 2 To lastrow_klein
    For row2 = 2 To lastrow_all
    
        If Sheets("Betrachtungszeitraum_klein").Cells(row1, 4).Value =                           _
_
Sheets("Betrachtungszeitraum_all").Cells(row2, 4).Value And _
           Sheets("Betrachtungszeitraum_klein").Cells(row1, 6).Value > Sheets(" _
Betrachtungszeitraum_all").Cells(row2, 6).Value And _
           Sheets("Betrachtungszeitraum_klein").Cells(row1, 6).Value - Rueckwaertsdauer <  _
Sheets("Betrachtungszeitraum_all").Cells(row2, 6).Value Then
           MFE = MFE + 1
        End If

     If Sheets("Betrachtungszeitraum_klein").Cells(row1, 4).Value = Sheets(" _
Betrachtungszeitraum_all").Cells(row2, 4).Value And _
           Sheets("Betrachtungszeitraum_klein").Cells(row1, 6).Value < Sheets(" _
Betrachtungszeitraum_all").Cells(row2, 6).Value And _
           Sheets("Betrachtungszeitraum_klein").Cells(row1, 6).Value + Vorwaertsdauer > Sheets(" _
 _
Betrachtungszeitraum_all").Cells(row2, 6).Value Then
           Erfolg_Einsatz = Erfolg_Einsatz + 1
        End If
        
    
    Next row2

Sheets("Betrachtungszeitraum_klein").Cells(row1, 12).Value = MFE
Sheets("Betrachtungszeitraum_klein").Cells(row1, 13).Value = Erfolg_Einsatz


MFE = 0
Erfolg_Einsatz = 0

Next row1

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
Rot Prüfung auf Mehrfacheinsatz/Erfolg
20.02.2019 15:33:37 Dennis R.
NotSolved
20.02.2019 18:37:50 Gast63380
NotSolved
21.02.2019 08:18:16 Gast59938
NotSolved
20.02.2019 18:39:47 AlterDresdner
NotSolved