Werte aus einer Frachtmatrix wiedergeben

Dieses Thema Werte aus einer Frachtmatrix wiedergeben im Forum "Microsoft Office Suite" wurde erstellt von mav1976, 15. Feb. 2008.

Thema: Werte aus einer Frachtmatrix wiedergeben Moin, ich zerbreche mir momentan äweng den Kopf. Ich habe eine Frachtmatrix, die sich horizontal nach den...

  1. Moin,

    ich zerbreche mir momentan äweng den Kopf. Ich habe eine Frachtmatrix, die sich horizontal nach den Gewichtsintervallen in to (0,5, 1, 1,5, 5, 10, 15 etc.) und vertikal nach Kilometerzonen (30, 60, 90 ... etc.) gliedert.

    In einer anderen Tabelle habe ich Daten, die einerseits die Entfernung und das Gewicht enthalten. Ich versuche nun seit einiger Zeit, in einer separaten Spalte die jeweilige Frachtrate zu ermitteln, die man aus der Matrix erhält.

    Ich habe es bereits damit versucht, den Befehl Index zu verwenden in Verbindung mit Vergleich. Das hat nicht richtig hingehauen. Ergebnis: #NV. :(

    Mittels Sverweis und Vergleich habe ich es auch versucht - selbes Ergebnis. :(

    Hat eventuell jemand eine Idee, wie ich zu meinem gewünschten Ergebnis komme? Genutzt wird Office 2007.
     
  2. Hallo mav1976,

    darf es eine selbstgeschriebene Funktion sein ?

    Code:
    Option Explicit
    
    Function MatrixGewichtKilometer(vkm As Variant, vgewicht_t As Variant)
    ->Gibt den Eurowert aus einer Matrix Km/Gewicht zurück oder Fehler
    ->
    ->Voraussetzung:
    ->Matrix -
    -> horizontal Gewicht
    -> vertikal  Kilometer
    -> die Kilometer-Werte(nur die Werte) sind als Name->Kilometer' definiert
    -> die Gewicht-Werte (nur die Werte) sind als Name->Gewicht'  definiert
     
     Const cBEREICH_km = Kilometer
     Const cBEREICH_t = Gewicht
      
    ->Bereichsdefinitionen prüfen
     Dim r_km As Range, r_t As Range
     On Error Resume Next
     Set r_km = Range(ActiveWorkbook.Names(cBEREICH_km))
     Set r_t = Range(ActiveWorkbook.Names(cBEREICH_t))
     If (r_km Is Nothing) Or (r_t Is Nothing) Then
      Err.Clear
      MatrixGewichtKilometer = Fehler: Bereich->Kilometer' oder Bereich->Gewicht' nicht definiert
      GoTo AUFRAEUMEN
     End If
     On Error GoTo 0
     
    ->Eingangswert km pruefen
     Dim dkm As Double
     On Error Resume Next
     dkm = vkm
     If Err.Number > 0 Or (dkm <= 0) Then
      Err.Clear
      MatrixGewichtKilometer = Fehler: Parameter Kilometer unzul.
      GoTo AUFRAEUMEN
     End If
     On Error GoTo 0
     
    ->Eingangswert t pruefen
     Dim dt As Double
     On Error Resume Next
     dt = vgewicht_t
     If Err.Number > 0 Or (dt <= 0) Then
      Err.Clear
      MatrixGewichtKilometer = Fehler: Parameter Gewicht unzul.
      GoTo AUFRAEUMEN
     End If
     On Error GoTo 0
     
    ->Gewicht von/bis Spalte in Zeile
     Dim lt_SPAnf As Long, lt_SPEnd As Long, lt_Z As Long, lSpalte As Long
     lt_SPAnf = r_t.Column
     lt_SPEnd = r_t.Column + r_t.Columns.Count - 1
     lt_Z = r_t.Row
    ->GewichtsSpalte bestimmen
     Dim d1 As Double, d2 As Double
     d2 = r_t.Parent.Cells(lt_Z, lt_SPEnd)
     If dt > d2 Then lSpalte = lt_SPEnd: GoTo GEWICHT_ENDE
     lSpalte = lt_SPAnf
     Dim sp As Long
     For sp = lt_SPEnd To lt_SPAnf + 1 Step -1
      d1 = r_t.Parent.Cells(lt_Z, sp)
      d2 = r_t.Parent.Cells(lt_Z, sp - 1)
      If (d1 >= dt) And (d2 < dt) Then lSpalte = sp
     Next
    GEWICHT_ENDE:
     
    ->Kilometer von/bis Zeile in Spalte
     Dim lkm_ZAnf As Long, lkm_ZEnd As Long, lkm_SP As Long, lZeile As Long
     lkm_ZAnf = r_km.Row
     lkm_ZEnd = r_km.Row + r_km.Rows.Count - 1
     lkm_SP = r_km.Column
    ->KilometerZeile bestimmen
     d2 = r_km.Parent.Cells(lkm_ZEnd, lkm_SP)
     If dkm > d2 Then lZeile = lkm_ZEnd: GoTo KILOMETER_ENDE
     lZeile = lkm_ZAnf
     Dim z As Long
     For z = lkm_ZEnd To lkm_ZAnf + 1 Step -1
      d1 = r_km.Parent.Cells(z, lkm_SP)
      d2 = r_km.Parent.Cells(z - 1, lkm_SP)
      If (d1 >= dkm) And (d2 < dkm) Then lZeile = z
     Next
    KILOMETER_ENDE:
     
     MatrixGewichtKilometer = r_km.Parent.Cells(lZeile, lSpalte).Value
     
    AUFRAEUMEN:
     On Error GoTo 0
     Set r_km = Nothing: Set r_t = Nothing
    End Function
    Diese Funktion packst du in ein Modul in deiner Mappe.


    Für die Funktion mußt du in deiner Matrix
    - den Bereich der KM-Werte als Namen Kilometer
    - den Bereich der Gewichts-Werte als Namen Gewicht
    definieren. (unter 2003: Einfügen->Namen->Definieren)

    Wenn z.B.
    in B21 ein Kilometerwert steht und
    in A21 ein Gewichtswert steht
    dann gibt folgende Formel den Euro-Wert zu diesem Pärchen aus:
    Code:
    =MatrixGewichtKilometer(B21;A21)
    Wenn du mir an mein mailaddy mailst, schick ich dir die Beispiel-Datei

    Gruß Matjes :)
     
  3. Moin,

    danke für das Funktionsmakro. Habe dir eine Mail an deine Adresse gesandt.
     
  4. Ola,

    nur für den Fall, dass eine Lösung ohne Makro gesucht werden sollte: Mit Sverweis als letzten Parameter in eien Wverweis funktion müsste so etwas auch gehen ...
     
  5. Moin,

    ich habe nach mehrstündigen Analysieren auch eine Lösung ohne Makro gefunden. Mittels Index in Verbindung mit Wenn und Vergleich Funktionen ist dies auch zu bewerkstelligen.

    Aber nichts destotrotz würde mich die Funktionsweise des Makros von Matjes dennoch interessieren. Da ich aber mit Makros absolutes Neuland betrete, weiß ich nicht einmal, wie ich diese Funktion oben plazieren sollte bzw. wie sie dann auch arbeitet. Welche Zellen muß ich wie konfigurieren etc.

    Vielen Dank bereits für die gegebenen Hilfen.
     
Die Seite wird geladen...

Werte aus einer Frachtmatrix wiedergeben - Ähnliche Themen

Forum Datum
Werte aus mehreren Excel-Tabellen in einer Tabelle zusammenführen Microsoft Office Suite 14. Okt. 2004
php: Werte von einer zur anderen Seite übergeben Windows XP Forum 5. Aug. 2004
Excel Tabelle Werte zu ordnen Microsoft Office Suite 23. Sep. 2016
Lüftersteuerungsprogramme finden keine Werte/funktionieren nicht Windows 8 Forum 28. Juli 2015
Abspeichern von Registry Werten Windows XP Forum 25. Okt. 2011