Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1760to1764
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

Schleife mit besonderen Bedingungen

Schleife mit besonderen Bedingungen
01.06.2020 12:44:12
Burak
Guten Morgen werte Community,
ich hantiere hier mal wieder in Excel mit VBA etwas herum und mir fehlt der Gedankensprung zum richtigen Vorgehen bei meinem Problem.
Es geht um eine Liste von x Werten die alle einem Datum zugeordnet sind, bzw. mehreren, aber nur das eine spielt hier eine Rolle. Das Ziel ist es, dass das Makro diese Liste durchläuft und eine Reihenfolge festlegt welche Zeile wann dran kommt.
Kurz gesagt geht es um die Nacharbeit an Maschinen in einer Produktion und es wird ein Makro benötigt, welches vorgibt welche Maschine zuerst nachbearbeitet werden soll und welche später usw.
Spalte E beinhaltet das Datum, wo die Nacharbeit frühstmöglich gestartet werden kann
Spalte F beinhaltet die benötigten Stunden für die zugehörige Nacharbeit
Spalte G beinhaltet die Anzahl an Arbeitsplätzen die an dem TAG zur Verfügung stehen (eine Nacharbeit benötigt genau einen Arbeitsplatz)
Spalte H beinhaltet die Stunden die an dem Tag gearbeitet werden können
Spalte J bis M beinhaltet berechnte Werte zum einfacheren Festlegen der Reihenfolge
Spalte N soll die Reihenfolgenummer danach drinstehen
Spalte O beinhaltet dann ein "Ja" oder "Nein", ob der Auftrag bereits erledigt ist (war Teil meines Gedankengangs, wie man das Makro hinkriegen kann, ist aber nicht notwendig)
Spalte R ist eine Liste vom frühsten Datum in Spalte E bis zum spätesten Datum in Spalte E
Spalte S beinhaltet die Anzahl an Aufträgen für das jeweilige Datum.
Beispieldatei: https://www.herber.de/bbs/user/137920.xlsx
Makro in Textdatei: https://www.herber.de/bbs/user/137921.txt
Zur Idee des Makros:
1. Nimm das frühste Datum aus Spalte E
2. Gucke alle Aufträge/Zeilen an, wo das Datum in Spalte E übereinstimmt oder älter ist
3. Überprüfe ob der Auftrag bereits erledigt ist (nur notwendig um doppeltes zu vermeiden)
4. Priorisiere Aufträge die in der Vergangenheit sind und noch nicht abgeschlossen worden
5. Suche bei allen Zeilen, die die Punkte 2 und 3 erfüllen, in Spalte M, und beachte bei der Reihenfolge den Wert von niedrig nach hoch (-7 wird bearbeitet noch vor -2 oder +25)
6. Wenn ein Wert in Spalte M mehrfach vorkommt, überprüfe ob der Auftrag an dem Tag geschafft werden kann (Wert in Spalte F kleiner als Wert in Spalte H)
7. Wiederhole das für jedes Datum bis zum spätesten Datum in Spalte E
Mein Hauptproblem dabei liegt die richtige Vorgehensweise zu finden bei Punkt 5. Dieser Weg mehrere Zeilen sich anzugucken die eine Bedingung erfüllen, sie nach ner zweiten Bedingung (Spalte M) zu priorisieren und wenn da was doppeltes vorkommt noch einen dritten Wert zu berücksichtigen. Das sind so viele Werte die immer mit einander verglichen werden müssen.
Als Mensch sieht man mit zwei drei Blicken was zuerst dran kommt aber im Makro ist es nicht so einfach wie erwartet.
Ich hoffe ich habe die Regeln dieses Forums eingehalten. Bin zwar schon lange angemeldet aber ziemlich unerfahren hier.
Freundliche Grüße
Burak

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife mit besonderen Bedingungen
03.06.2020 08:34:16
fcs
Hallo Burak,
wenn man mit 2 Hilfsspalten arbeitet, dann sollte mann das Problem mit hilfe einer Sortierung lösen können.
Bei meiner Lösung müssen erledigte Aufträge in der entsprechenden Spalte mit einem Zeichen markiert werden - z.B. x oder j. Bei den noch offenen Aufträgen darf nichts stehen!
Nachfolgend ein entsprechendes Makro.
Starte das Makro zum Testen im Schrittmodus bei verkleinertem VBA-Fenster, dann kannst du mit Taste F8 zeilenweise verfolgen was im Tabellenblatt passiert.
Alle Zeilen, in denen "Start Nacharbeit", "Differenz Stunden", und der Wert für F &lt H identisch sind erhalten die gleiche Folgenummer.
LG
Franz
Sub prcReihenfolge()
Dim wksRF As Worksheet
Dim spaSort As Long
Dim spaHilf As Long
Dim Zeile As Long, Zeile_L As Long, Zeile_1 As Long, zeiTitel As Long
Dim rngSort As Range
Set wksRF = ActiveWorkbook.Worksheets("Reihenfolge")
Application.ScreenUpdating = False
With wksRF
zeiTitel = 2 'Zeile mit Spaltentiteln
'Hilfsspalte zum Merken der aktuallen sortierreihenfolge _
= 1. freie Spalte rechts neben den Daten
spaSort = .Cells(zeiTitel, 1).End(xlToRight).Column + 1
' Hilfsspalte zur Kennzeichnnung Wert Spalte F 

Anzeige
AW: Schleife mit besonderen Bedingungen-Nachtrag
03.06.2020 08:39:23
fcs
Hallo Burak,
in meiner Antwort wurde ein Teil des Makros abgeschnitten.
Deshalb mein Makro hier noch als Textdatei.
https://www.herber.de/bbs/user/137963.txt
LG
Franz

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige