Office: Array dynamisch kürzen

Helfe beim Thema Array dynamisch kürzen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich hoffe ihr könnt mir weiterhelfen, ich komme einfach nicht weiter. Und zwar geht es um Folgendes: Ich habe ein ganz langes Array... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von VBA_Anfängerin, 2. Juni 2015.

  1. Array dynamisch kürzen


    Hallo zusammen,

    ich hoffe ihr könnt mir weiterhelfen, ich komme einfach nicht weiter. Und zwar geht es um Folgendes:

    Ich habe ein ganz langes Array mit 3 Spalten, hier mal ein Beispielauschnitt (ihr findet die Tabelle in Excel Format plus Makro im Anhang*wink.gif* )

    Gewinn, Anfang, Ende
    100, 5, 16
    50, 6, 16
    43, 18, 24
    20, 8, 10

    Ich habe schon vorher die Zeilen in das Array so eingetragen, dass die Einträge absteigend nach der Höhe des Gewinns sortiert sind.

    "Anfang" ist dabei die Stunde, in der Prozess i beginnt und bis "Ende" dauert. Also für den 1. Eintrag geht Prozess i=1 von der 5. Stunde bis zur 16. Stunde und im 2. Eintrag geht Prozess i=2 von der 6. bis zur 16. Stunde. Allerdings dürfen sich die Prozesse nicht überlagern. Sprich ich möchte den Eintrag für i=2 löschen, da er sich mit i=1 überschneidet.

    Prozess i=3 ist wieder zulässig, da der Anfang von i=3 >= Ende von i=1 ist.

    Insgesamt müssen also i=2 mit Gewinn=50 und i=4 mit Gewinn=20 gelöscht werden.

    Leider komme ich nicht auf das richtige Ergebnis. Mein Problem ist, dass bei meinem Makro immer nur der Intervall vom letzten Prozess anschaut wird, aber nicht alle Intervalle die noch drin sind.

    Ich habe meinen Code ziemlich ausführlich kommentiert, damit ihr besser verstehen könnt, was ich mache. Falls ihr noch Fragen habt, versuche ich mein Problem bzw. meine Ideen hier noch ausführlicher zu beschreiben.

    Ich würde mich sehr über eure Hilfe freuen.
    Schon mal besten Dank im Voraus,
    Lisa

    :)
     
    VBA_Anfängerin, 2. Juni 2015
    #1
  2. Habe überlegt, das ganz noch über eine weitere Schleife zu machen:

    Code:
     
    VBA_Anfängerin, 4. Juni 2015
    #2
  3. Hallo,

    Code:
     
  4. Array dynamisch kürzen

    Hey vielen, vielen Dank für den Code.

    Ich muss ihn noch 100%ig verstehen, aber funktioniert einwandfrei!

    Danke!
     
    VBA_Anfängerin, 4. Juni 2015
    #4
  5. Korrektur

    Code:
     
  6. Danke für deine Antwort.


    Leider wird mir mit dem korrigierten Code nichts mehr angezeigt.

    Problem sind die Zeilen:

    Code:
    Warum meintest du dass der 1. Code von dir falsch ist?
    Mit dem alten Code klappt bei mir alles super, auch wenn ich eine Tabelle von über 2000 Zeilen habe. Allerdings habe ich noch eine Frage....

    Ich wollte jetzt noch eine Mindestabstandszeit einbauen. Sprich Prozess 2 darf z.B. erst 2 Stunden später anfangen nachdem Prozess 1 aufgehört hat.

    Ich hatte mir überlegt das ganze einfach wie folgt zu ergänzen, komme aber leider auf kein richtigtes Ergebnis *frown.gif*

    Code:
    Würde mich sehr über eine Antwort freuen und vielen Dank schonmal für die Hilfe!
     
    VBA_Anfängerin, 7. Juni 2015
    #6
  7. Hallo,

    Nun, es werden immer 2 Datensätze verglichen. Liegt eine Überschneidung vor,
    müssen beide Datensätze gekennzeichnet werden.

    Beim 1. Code wird bei Überschneidung immer nur der 2. Datensatz gekennzeichnet.

    Kommt nun drauf an was du auswerten willst.

    Ich denke für dich ist der 1. Code der richtige:
    Alle folgenden Datensätze die sich mit dem 1. Datensatz schneiden werden
    nicht berücksichtigt.

    Löse das im Blatt in einer weiteren Spalte. Pass dann im Code die jeweiligen SpaltenIndizes an.

    Code:
     
  8. Array dynamisch kürzen

    Hallo xlph,

    vielen Dank für deine Antwort. Das mit der weiteren Spalte ist ein einfacher und guter Tipp! *rolleyes.gif*

    Leider muss ich dich nochmal nerven *frown.gif*

    Ich habe den Quellcode jetzt mal auf eine sehr große Tabelle angewandt- leider werden mir nur die ersten 3 Werte angezeigt. Danach werden die Werte -warum auch immer- abgeschnitten. Habe die Tabelle mal angehangen.
    Der dritte Wert aus der "Berechnung" endet ja bei 80. Es gibt allerdings noch genügend Werte die nach 80 starten. der nächste Wert wäre z.B. ab 89 mit einem Gewinn von -12886.

    Hast du eine Erklärung woran das liegen könnte? Das Array mit Result ist ja groß genug um alle möglichen Werte reinzuschreiben :/

    Das wird auch endlich meine letzte Frage gewesen sein! Versprochen *Smilie *wink.gif*
     
    VBA_Anfängerin, 8. Juni 2015
    #8
  9. Hallo,

    anbei ein etwas anderer Ansatz:
    Code:
    Gruß
    Aloys
     
    aloys78, 8. Juni 2015
    #9
  10. Hallo,

    jeder Zeitabschnit schneidet mindestens einen anderen.

    Somit dürften keine Datensätze angezeigt werden ( oder nach Version 2: 3 Datensätze).

    @Aloys
    das haut nicht hin
     
  11. Hallo,

    zur Prüfung Visualisierung starten.
     
  12. Hallo zusammen,

    den von Aloys werde ich gleich auch nochmal testen, vielen Dank dir !

    @ xlph:

    Wow, danke für deine Visualisierung! Vielen vielen Dank.
    Ich habe es mir einfach mit einem Filter angeschaut, also einfach gesagt: den Filter größer als letzter Eintrag in Ergebnistabelle gesetzt. Und dadurch sehe ich relativ schnell, dass auch danach noch Einträge kommen, die sich nicht mit den Einträgen in der Ergebnistabelle überlappen- Habs einfach nochmal ohne die Spalte 4 und mit dem Filter hochgeladen :/

    Ach echt blöd, dass kann doch nicht so schwer sein :/
     
    VBA_Anfängerin, 8. Juni 2015
    #12
  13. Array dynamisch kürzen

    Nochmals es überschneiden sich ALLE Datensätze.

    Somit dürften keine übrig bleiben.

    Das ist auch ersichtlich in der Visualisierung.

    Und mit dem Filter gleichst nur einen Datensatz mit den restlichen ab.
    Aber es müssen alle mit allen Datensätzen verglichen werden.

    Es ist wie eine Kette. Es gibt kein Kettenglied das für sich alleine liegt.
     
  14. Danke für die fixe Antwort.

    Ich glaube wir haben aneinander vorbei geredet und man sieht, dass ich deinen Quellcode auch noch nicht ganz verstanden habe :/

    Mein Ziel ist es, dass ich immer die Werte in die Ergebnistabelle aufnehme, dich sich nicht mit den Werten aus der Ergebnistabelle überlappen. Also wie ja auch die ersten 3 Datensätzen . Und anhand des Filters sieht man ja, dass auch noch nach der 78. Stunde mögliche Intervalle kommen, die in die Ergebnistabelle aufgenommen werden, da diese größer 78 sind und somit nicht in den Intervallen aus der Ergebnistabelle liegen.

    Also der 1. Wert aus dem Filter: Gewinn=-13461 und Anfang 79 bis Ende 91, liegt ja nicht in den Intervallen aus der Ergebnistabelle.

    Ich knobel mal noch weiter...
     
    VBA_Anfängerin, 8. Juni 2015
    #14
  15. Falls es noch jdm interessiert, ich habe es jetzt anders gelöst und komme auf das gewünschte Ergebnis. Du hast mir aber sehr geholfen xlph, danke!*Smilie

    Code:
     
    VBA_Anfängerin, 9. Juni 2015
    #15
Thema:

Array dynamisch kürzen

Die Seite wird geladen...
  1. Array dynamisch kürzen - Similar Threads - Array dynamisch kürzen

  2. Mittelwert aus mehreren Spalten als dynamisches Array

    in Microsoft Excel Hilfe
    Mittelwert aus mehreren Spalten als dynamisches Array: Hallo liebes Forum, ich bin bei folgendem Problem ratlos: Ich berechne für verschiedene Dozenten Feedback anhand von 3 verschiedenen Kriterien. Die Stammdaten der Feedbacks stehen in einer...
  3. Adressen in eine Zelle bei Übereinstimmung eindeutiger Werte einer anderen Spalte

    in Microsoft Excel Hilfe
    Adressen in eine Zelle bei Übereinstimmung eindeutiger Werte einer anderen Spalte: Hallo zusammen, wer letzteren Thread kennt, hier eine Neuauflage. Problem: Aus Array-Berechnungen (Variablen von Let) ein weiteres Array zu erzeugen, welches für alle eindeutigen Werte aus G die...
  4. Zahlendubletten im Array

    in Microsoft Excel Hilfe
    Zahlendubletten im Array: Guten Morgen liebe Community, anbei ein vereinfachtes Beispiel der Problematik, da das Original mehrere LAMBDA-Funktionen und Tabellen mit einbezieht. Ich benötige die Lösung, um eine weitere...
  5. Formel bei Veränderung von dynamischem Array "mitziehen"?

    in Microsoft Excel Hilfe
    Formel bei Veränderung von dynamischem Array "mitziehen"?: Hallo liebes Forum, ich komme bei folgendem Problem nicht weiter und habe mir hier etwas Hilfe erhofft: Ich habe eine Tabelle mit Feedbacks zu Lehrgängen/Kursen. Diese will ich nach Dozent erst...
  6. Array-Inhalt löschen ("dynamisch")

    in Microsoft Excel Hilfe
    Array-Inhalt löschen ("dynamisch"): Hallo. hatte es schon mal in nem anderen Thread, aber das war nich wirklich gut... Ich habe lauter unterschiedlicher (= länge, Anzahl der Dimensionen) Arrays. Wie kann ich diese Arrays...
  7. Dynamische Matrixformeln und Verschüttetes Array Verhalten

    in Microsoft Excel Tutorials
    Dynamische Matrixformeln und Verschüttetes Array Verhalten: Dynamische Matrixformeln und Verschüttetes Array Verhalten Excel für Microsoft 365 Excel für Microsoft 365 für Mac Excel für das Web Excel für iPad Excel für...
  8. Array dynamisch einlesen

    in Microsoft Excel Hilfe
    Array dynamisch einlesen: Hallo, möchte aus einer Mappe alle Werte aus den Spalten A aus allen Blättern in ein Array einlesen. Leider weiß ich am anfang noch nicht, wie groß dieses array sein muss. Wie geh ich am besten...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden