Makro für komplexe Rangfolge

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von schnorklunder.

    Makro für komplexe Rangfolge

    Hallo Leute,
    ich bin ein blutjunger Anfänger was VBA anbelangt und bin auf der Suche nach einer Lösung für das folgende Problem.

    Ausgangssituation:



    Ich brauche einen Algorithmus für eine komplexere Rangfolgenermittlung.
    Dabei soll der Algorithmus wie folgt vorgehen:

    1. Durchsuche Spalte "Summe" nach MaxWert und gebe Zeilenindex aus
    2. Durchsuche die ermittelte Zeile nach dem MaxWert und gebe den Spaltenindex aus
    3. Nimm den Spaltenindex und setze ihn als Zeilenindex
    4. wiederhole 2. bis Wert = 0
    5. Durchsuche Spalte "Summe" nach MaxWert und gebe Zeilenindex aus
    (Bedingung: bereits ermittelte Zeilen fallen raus)

    Lösung des Algorithmus ist die Rangfolge:

    A--> B --> C--> E --> D

    Ich hoffe ihr könnt mir weiterhelfen.

    Grüße

    Stefan
    das ist eine ziemlich konkrete aufgabenstellung und keine fragestellung. wo ist dein problem? was verstehst du nicht, oder an welcher stelle kommst du nicht weiter? was hast du bisher an code?
    Hallo Fufu,

    mein Problem liegt in der Umsetzung der von mir formulierten Aufgabenstellung.

    Was ich an Code besitze, sind die einzelnen Berechnungsformeln aus der Tabelle.

    z.B.

    Schritt 1 wird in 2 Zellen wie folgt berechnet:



    Quellcode

    1. B9= MAX(G2:G6)

    ---> Maxwert ermittelt

    Quellcode

    1. C9= INDEX(A2:A6;VERGLEICH(A5;G2:G6;0))

    ---> Zeilenindex ausgegeben



    Schritt 2 wieder 2 Zellen:



    Quellcode

    1. B10= MAX(INDIREKT("B"&VERGLEICH(C9;$A$1:$A$6;0)&":F"&VERGLEICH(C9;$A$1:$A$6;0)))

    ----> größter Wert des angebenen Zeilenindexes ermittelt

    Quellcode

    1. C10= =INDEX($B$1:$F$1;;VERGLEICH(B10;INDIREKT("B"&VERGLEICH(C9;A$1:A$6;0)&":F"&VERGLEICH(C9;A$1:A$6;0));0))

    ----> Spaltenindex des größten Wertes ausgegeben



    Schritt 3 wieder 2 Zellen:



    Quellcode

    1. B11= MAX(INDIREKT("B"&VERGLEICH(C10;$A$1:$A$6;0)&":F"&VERGLEICH(C10;$A$1:$A$6;0)))

    ---> innerhalb der Zeile des ermittelten Spaltenindexes nach dem größten Wert geguckt

    Quellcode

    1. C11= INDEX($B$1:$F$1;;VERGLEICH(B11;INDIREKT("B"&VERGLEICH(C10;A$1:A$6;0)&":F"&VERGLEICH(C10;A$1:A$6;0));0))

    ---> Spaltenindex ausgegeben


    Daher die Fragestellungen:

    wie lässt sich das in einem Makro vereinfachen? (Geht das überhaupt)
    Hallo BiedermannS,

    der Algorithmus soll aus der Ausgangstabelle (siehe 1. Beitrag) eine komplexere Rangfolge ermitteln.

    Ich erklär mal das manuelle Vorgehen:

    1. Suche den größten Wert aus der Summenspalte heraus (13) --> damit ist Rang 1 an A vergeben
    2. Suche den größten Wert innerhalb des Rangs [A] (Wert 5) --> Rang 2 geht an B (B hat quasi zu A die stärkste Beziehung)
    3. Suche den größten Wert innerhalb des nächsten Rangs (B) (Wert 4) --> Rang 3 geht damit an C (C hat stärkste Beziehung zu B)

    usw.

    Es soll sich also eine rekursive Rangfolge ergeben, die sich immer auf den vorigen Rang bezieht.

    Ich hoffe das ist am Beispiel verständlicher geworden?

    Grüße

    Stefan