Excel Verschachtelung

  • #1
C

Chapac

Mitglied
Themenersteller
Dabei seit
27.12.2002
Beiträge
6
Reaktionspunkte
0
Hallo alle,
ich möchte gerne die Dieselverbräuche verschiedener Fahrzeuge berechnen. in Spalte A stehen die Fahrzeug-ID, in Spalte B die getankten Dieselmengen und in Spalte C die zu dem Zeitpunkt der Tankung abgelesenen Kilometerstände.
Angenommen also Fahrzeug 1 tankt 46,5 Liter bei einem Kilometerstand von 10000 km und tankt dann wieder bei einem Kilometerstand von 10100 km eine Menge von 25 Litern etc...
Wäre um einen Lösungsansatz sehr verlegen... ;)

mfg Chapac
 
  • #2
Hallo Chapac,

folgender Makro berechnet dir den Verbrauch und schreibt ihn in Spalte D (l / 100 km)

ggf. müßtest du noch den Wert der Konstante c_ERSTE_WERTEZEILE anpassen, die die Eintragszeile definiert.
Gruß Matjes :)

Code:
Sub VerbrauchEintragen()

 ->Zeilendefinitionen
  Const c_ERSTE_WERTEZEILE = 2
 ->Spaltendefinitionen
  Const c_SP_FZG_IG = 1
  Const c_SP_FZG_VERBRAUCH = 2
  Const c_SP_FZG_KMSTAND = 3
  Const c_SP_SPEZIFISCHERVERBRAUCH = 4
  
  Dim ws As Worksheet, l_Rows As Long
  Dim d_km_Stand_End As Double, d_km_Stand_Anf As Long
  Dim d_Verbrauch As Double
  
  Set ws = ActiveSheet
  l_Rows = ws.Cells(ws.Rows.Count, c_SP_FZG_IG).End(xlUp).Row
  
  For x = l_Rows To c_ERSTE_WERTEZEILE Step -1
   ->letztes Auftreten der FzgId vor der aktuellen Zeile suchen
    For y = x - 1 To c_ERSTE_WERTEZEILE Step -1
      If ws.Cells(x, c_SP_FZG_IG).Value = ws.Cells(y, c_SP_FZG_IG).Value Then
        d_km_Stand_End = ws.Cells(x, c_SP_FZG_KMSTAND).Value
        d_km_Stand_Anf = ws.Cells(y, c_SP_FZG_KMSTAND).Value
        d_Verbrauch = ws.Cells(x, c_SP_FZG_VERBRAUCH).Value
        If d_km_Stand_End <= d_km_Stand_Anf Then
          ws.Cells(x, c_SP_FZG_KMSTAND).Select
          MsgBox ( _
            Fehler: Kilometer-Anfang <= Kilometer-Ende & vbLf & vbLf & _
            in Zeile  & y &  km-Anfang =  & d_km_Stand_Anf & vbLf & _
            in Zeile  & y &  km-Ende   =  & d_km_Stand_End & vbLf & _
            --> Abbruch)
            Exit Sub
        End If
        If d_Verbrauch <= 0 Then
          ws.Cells(x, c_SP_FZG_VERBRAUCH).Select
          MsgBox ( _
            Fehler: Verbrauch in Zeile <= 0 & vbLf & _
            in Zeile  & x &  Verbrauch =  & d_Verbrauch & vbLf & _
            --> Abbruch)
            Exit Sub
        End If
        d_spez_Verbrauch = _
          d_Verbrauch * 100 / (d_km_Stand_End - d_km_Stand_Anf)
        ws.Cells(x, c_SP_SPEZIFISCHERVERBRAUCH).NumberFormat = 0.0 
        ws.Cells(x, c_SP_SPEZIFISCHERVERBRAUCH).Value = d_spez_Verbrauch
        Exit For
      End If
    Next y
  Next x
  Set ws = Nothing
End Sub
 
  • #3
Jupp !

Danke Matjes das ist´s was ich gesucht habe.... :D

thx Chapac
 
Thema:

Excel Verschachtelung

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.493
Neuestes Mitglied
Flensburg45
Oben