Matrixwerte finden, auslesen und benutzen

  • Excel

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von lilalu_123.

    Matrixwerte finden, auslesen und benutzen

    Hallo zusammen,

    habe ein Problem! Und zwar
    möchte ich aus einer erstellten Entfernungsmatrix bestimmte Werte
    auslesen, weiß aber nicht wie ich den Bezug zu diesen herstellen soll.
    Die Matrix habe ich per VBA mit Excel und Mappoint automatisch
    erstellt. Jetzt möchte ich also auf die berechneten Werte zugreifen. In
    meiner angefügten Datei möchte ich z. B. von a zu b fahren (s.
    Tabelle1; Spalte: Name), die Entfernung hierfür ist in Tabelle2 in der
    Matrix hinterlegt und soll ausgelesen werden. Dieser Schritt soll in
    der Reihenfolge von Tabelle1 wiederholt werden, solange es sich um
    denselben LKW mit derselben Autonummer handelt. Diese Entfernungen
    sollen dann für jeden LKW aufsummiert werden. Das ganze soll per VBA
    geschehen. Als Ausgangspunkt ist für jeden LKW ein und dasselbe Depot
    vorgesehen. Ich hoffe ihr habt mein Anliegen verstanden und könnt mir
    weiterhelfen.

    Danke schon mal!

    Viele Grüße

    Kikolino
    Dateien
    • matrix.xls

      (88,58 kB, 594 mal heruntergeladen, zuletzt: )
    Wo genau ist jetzt das Problem? Wie soll dir geholfen werden, wenn du nicht schreibst wo du nicht mehr weiter kommst? Ich sehe zawr dein Vorhaben aber nicht ein Fragezeichen. Oder hast du noch gar nichts? Lauf einfach mit einer Schleife die Tabelle durch und summier ggf eine Variable/Array.
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Servus Agent Smith!

    Mein Problem ist, dass auf die Matrix zugegriffen werden soll und die jeweiligen Werte gefunden werden sollen, wenn von Kunde x zu y gefahren wird! Ich habe ja eine komplette Matrix in Tabelle 2 von der ich aber nur bestimmte Werte benötige. Ich möchte jeweils einzelne Werte finden, weiß aber nicht wie ich sie auffinden soll, da ja kein Bezug besteht! Ich habe jeweils nur die Namen des Kunden von dem ich losfahre und den Namen des Kunden zu dem ich fahre, d. h. ich muss in der Matrix in der jeweiligen Spalte und Zeile nach den beiden Namen suchen und bekomme den Wert an der Stelle an der sich die Spalte und Zeile kreuzen. Nur wie soll ich das anstellen, mit einer Formel? Oder muss ich Zellen als Paare definieren? Verstehst du mein Anliegen jetzt? Ich hoffe, wenn nicht schreib mir bitte was ich genauer erklären soll... Danke!

    Gruss Kikolino
    Hier mal ein Denkanstoß:

    Visual Basic-Quellcode

    1. dim kunde_spalte, kunde_zeile as integer
    2. dim i as integer
    3. 'Kunde in den Spalten suchen
    4. for i = 2 to 10 'kunde 1-9 durchsuchen
    5. if Cells(i, 1) = "Kunde1" then 'oder (1, i) bin mir grad nicht sicher!
    6. kunde_spalte = i
    7. exit for
    8. end if
    9. next i
    10. 'Kunde in den Zeilen suchen
    11. for i = 2 to 10 'kunde 1-9 durchsuchen
    12. if Cells(1, i) = "Kunde2" then 'genau anders rum wie oben oder Range("A" & i)
    13. kunde_zeile = i
    14. exit for
    15. end if
    16. next i
    17. 'Gefundenen Wert aus der Matrix auslesen:
    18. Msgbox Cells(kunde_zeile, kunde_spalte)
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Tag zusammen,

    da hat Excel eigens die Funktion Index, zu füttern über Vergleich für die Zeilen und Spaltennummer. Die Formel lautet für eine Zelle:

    Quellcode

    1. =INDEX(A1:N14;VERGLEICH("d";A1:N1);VERGLEICH("j";A1:A14;1))

    Oder als eigene VB-Funktion:

    Visual Basic-Quellcode

    1. Sub Test()
    2. Debug.Print GiveItToMeBaby("j", "c")
    3. End Sub
    4. Function GiveItToMeBaby(strKunde1 As String, strKunde2 As String)
    5. Dim myRange As Range
    6. Dim Result As Variant
    7. 'Bereich
    8. Set myRange = Range("A1:O15")
    9. With Application.WorksheetFunction
    10. Result = .Index(myRange, _
    11. .Match(strKunde1, myRange.Rows(1)), _
    12. .Match(strKunde2, myRange.Columns(1)))
    13. End With
    14. 'Bei halber Füllung der Matrix: auf richtiger Seite nachschlagen:
    15. If Len(Result) = 0 Then Result = GiveItToMeBaby(strKunde2, strKunde1)
    16. GiveItToMeBaby = Result
    17. End Function

    Dann gehts sogar noch einfacher, die kannst mit

    Quellcode

    1. =GiveItToMeBaby("K1";"K2")
    aufrufen.. Gruß

    Werte aus Matrix auslesen und neue Matrix mit einzelnen Werten erzeugen

    Hallo zusammen,

    ich habe ein ähnliches Problem wie kikolino.
    Ich habe eine vorhandene Rüstmatrix (in der bestimmte Rüstzeiten von einem Teil auf das andere an einer Maschine in min hinterlegt sind). In dieser Matrix sind Rüstzeiten aller Teile hinterlegt die auf dieser Maschine gefertigt werden können.
    Oft kommt es jedoch vor, dass nicht alle Teile über einen Auftrag gefertigt werden müssen, sondern bzw. nur 4 aus 8......
    Mein Ziel war es jetzt ein VBA Skript zu schreiben, was mir die momentan zu fertigenden Aufträge einliest (diese würde ich separat auf ein Tabellenblatt in Excel einfügen) und mir von den nur 4 Aufträgen eine Rüstmatrix erstellt die auf die Werte in der "großen" Matrix zurückgreift.

    Momentan arbeite ich mich in VBA erst ein und wollte einfach mal hier nach Hilfe fragen.
    Ist diese Vorgehensweise möglich?

    Wie müsste ich hierbei vorgehen?
    (habe die Excel Datei angehängt)

    Danke schonmal und viele Grüße:-)

    Lilalu_123
    Dateien