Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
444to448
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
444to448
444to448
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zählerstand

Zählerstand
22.06.2004 16:07:38
JanB
Hallo, ich habe ein Problem mit einer Formel für Zählerstände
Beispiel: Spalte A enthält Zähler, B die Differenz
A1 = 10; B1 = leer
A2 = 30; B2 = 20 (Diff. v. A2 zu A1)
A3 = leer; B3 = leer
A4 = 80; B4 = 50 (Diff. v. A4 zu A2)
Ich brauche also eine Formel die den aktuellen Wert abzüglich des letzten vorhandenen Wert rechnet. Wenn am Vortag vorhanden, dann wieder einen Tag vorher überprüfen bis ein Wert gefunden ist.
Formel MUSS ohne Funktion MAX (der letzten Werte) funktionieren weil auch ein Zählerüberschlag vorkommen kann.
Beispiel:
A1 = 5000, B1 = leer
A2 = leer, B2 = leer
A3 = 9999, B3 = 4999 (Diff. v A3 zu A1)
A4 = leer; B4 = leer
A5 = 10, B5 = -9989 (Diff. v A5 zu A3, wenn voriger maximaler Wert genutzt wird)
A6 = 200, B6 = -9799 (Diff. v A6 zu A3, wenn voriger maximaler Wert genutzt wird)
Allerdings fällt mir nicht gescheites dazu ein.
Gibt es eine Möglichkeit den "letzten vorherigen" Wert zu nutzen?
EInmalige falsche Differenz nach Zählerüberschlag (negativer Wert - könnte man unterdrücken) wäre OK.
Danke, Jan

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zählerstand
22.06.2004 17:20:46
Willi

Private Sub CommandButton1_Click()
Dim zelle
zelle = ActiveCell.Row & Count
'kann individuell verkleinert werden wenn weniger Eintragungen vorhanden sind
Range("a10000").Select
While ActiveCell = ""
ActiveCell.Offset(-1, 0).Select
Dim zahl2
zahl2 = ActiveCell.Value
Wend
If ActiveCell > 0 Then
ActiveCell.Offset(-1, 0).Select
While ActiveCell = ""
ActiveCell.Offset(-1, 0).Select
Wend
Dim zahl1
zahl1 = ActiveCell.Value
Else
End If
Range("b" & zelle & "").Select
ActiveCell.Value = zahl2 - zahl1
End Sub

'über ein Button starten
Nur ein kleiner Vorschlag soll nicht der Weisheit letzter schluß sein
Für eine Rückmeldung wäre ich (auch noch Anfänger) dankbar
Anzeige
AW: Zählerstand
23.06.2004 14:11:16
Willi
Ich habe meine erste Antwort noch einmal überarbeitet.
Das Ergebnis ist folgendes:

Private Sub CommandButton2_Click()
'den größten Wert in Spalte A bestimmen
Dim meinBereich As Range
Set meinBereich = Worksheets("Tabelle1").Range("A:A")
antwort = Application.WorksheetFunction.Max(meinBereich)
'geht zur Zelle mit größtem Wert
Range("A1").Select
Cells.Find(What:="" & antwort & "", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Dim zahl1, zeile
zahl1 = ActiveCell.Value
zeile = ActiveCell.Row
Do While zeile > 1
ActiveCell.Offset(-1, 0).Select
While ActiveCell = ""
ActiveCell.Offset(-1, 0).Select
Wend
Dim zahl2
zahl2 = ActiveCell.Value
Range("B" & zeile & "").Value = zahl1 - zahl2
zeile = ActiveCell.Row
zahl1 = ActiveCell.Value
If zeile = 1 Then
Range("A1").Select
Else
End If
Loop
End Sub


Die Funktion wird Mittels eine Button (kann über eine andere Anweisung)
ausgeführt.
Es Können mehrere Eintragungen in Spalte A stehen, zu denen die Berechnungen der in Spalte B fehlen.
Unabhängung von Lücken oder Ergebnissen, wird die Komplette Reihe immer
neu berechnet.
Anzeige
AW: Zählerstand
23.06.2004 14:19:44
Willi
Ich habe meinen ersten Vorschlag etwas überarbeitet.
Als Ergebnis habe ich folgende Lösung gefunden:

Private Sub CommandButton2_Click()
'den größten Wert in Spalte A bestimmen
Dim meinBereich As Range
Set meinBereich = Worksheets("Tabelle1").Range("A:A")
antwort = Application.WorksheetFunction.Max(meinBereich)
'geht zur Zelle mit größtem Wert
Range("A1").Select
Cells.Find(What:="" & antwort & "", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Dim zahl1, zeile
zahl1 = ActiveCell.Value
zeile = ActiveCell.Row
Do While zeile > 1
ActiveCell.Offset(-1, 0).Select
While ActiveCell = ""
ActiveCell.Offset(-1, 0).Select
Wend
Dim zahl2
zahl2 = ActiveCell.Value
Range("B" & zeile & "").Value = zahl1 - zahl2
zeile = ActiveCell.Row
zahl1 = ActiveCell.Value
If zeile = 1 Then
Range("A1").Select
Else
End If
Loop
End Sub

Funktion kann jederzeit die geforderten Werte berechnen.
Bedingung sollte sein, dass der größte Wert in Spalte A auch an
letzter Stelle steht.
Bei jedem Neueintrag wird die komplette Spalte B neuberechnet.
(Danke für die Rückmeldung)
Anzeige
AW: Zählerstand
23.06.2004 14:24:38
JanB
Hallo Willi,
danke für deine Antwort, und vor allem dafür dass du deine eigene Variante nochmal überarbeitet hast.
Ich bin leider bis jetzt noch nicht zum ausprobieren gekommen, mache mich aber gleich dran.
Gruß, Jan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige