Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1756to1760
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
Inhaltsverzeichnis

VBS Beträge in If Funktion

VBS Beträge in If Funktion
14.05.2020 15:33:34
Anni
Hallo ich habe folgendes Problem.
Ich möchte diese Excel Funktion in VBA umschreiben:
=WENN(ODER((E4="TIMEOUT");(E4="COMPLETE"));ABS(D3)-ABS(D4))
Also wenn in Zelle E4 Timeout oder Complete steht möchte ich, dass aus den Beträgen von D3 und D4 die Differenz gebildet wird.
Das Ergebnis steht dann bei mir in Zelle G4.
Ich habe bereits angefangen mit VBA zu programmieren aber das mit den Beträgen bekomme ich nicht hin, Nur ohne:
Dim i As Long
Dim FinalRow As Integer
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To FinalRow
If Sheets("Tabelle1").Cells(i, 5) = "TIMEOUT" Then
Sheets("Tabelle1").Cells(i, 7).Value = Sheets("Tabelle1").Cells(i - 1, 4) - Cells(i, 4)
ElseIf Sheets("Tabelle1").Cells(i, 5) = "COMPLETE" Then
Sheets("Daten Tabelle1").Cells(i, 7).Value = Sheets("Tabelle").Cells(i - 1, 4) - Cells(i, 4)
Else
Cells(i, 7).Value = "'"
End If
Next i
wie kann ich jetzt noch die die Beträge mit einbauen?(Ich bin VBA Anfänger)
Gruß und Danke schonmal im Voraus :)
Anni

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBS Beträge in If Funktion
14.05.2020 15:41:28
Regina
Hi,
ich habe den Code mal etwas zusammengefasst:
Public Sub test()
Dim i As Long
Dim FinalRow As Long
With Sheets("Tabelle1")
FinalRow = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To FinalRow
If .Cells(i, 5) = "TIMEOUT" Or .Cells(i, 5) = "COMPLETE" Then
.Cells(i, 7).Value = .Cells(i - 1, 4) - Cells(i, 4)
Else
Cells(i, 7).Value = "'"
End If
Next i
End With
End Sub
Ich verstehe aber Deine Frage nicht so ganz, Du rechnest doch schon in Spalte D den Wert aus der Vorzeile - den Wert aus der aktuellen Zeile?
Gruß Regina
AW: VBS Beträge in If Funktion
14.05.2020 15:49:12
Anni
OK danke dir schon mal:)
Ja aber ich brauche jeweils den Betrag von der Vorzeile - den Betrag der aktuellen Zeile
Anzeige
AW: VBS Beträge in If Funktion
14.05.2020 15:52:05
Anni
Also wenn die Zellen negativ sind sollen sie vor der Subtraktion positiv werden...
AW: VBS Beträge in If Funktion
14.05.2020 16:00:56
Regina
ok, dann teste mal so:
Public Sub test()
Dim i As Long
Dim FinalRow As Long
With Sheets("Tabelle1")
FinalRow = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To FinalRow
If .Cells(i, 5) = "TIMEOUT" Or .Cells(i, 5) = "COMPLETE" Then
If Cells(i - 1, 4) 
Wenn das nicht passt, lade mal eine Beispielmappe mit "Wunschergebnissen" hoch.
Gruß Regina
AW: VBS Beträge in If Funktion
14.05.2020 16:17:38
Anni
Hat leider nicht geklappt...
hier eine Beispiel Tabelle wie es am Ende aussehen soll. (noch mit normalen Wenn Funktion)
https:\/\/www.herber.de/bbs/user/137550.xlsx
Anzeige
AW: VBS Beträge in If Funktion
14.05.2020 16:35:20
Daniel
Hi
1. du hast die Tabellenblattbezeichnung vor dem letzten Cells in der Zeile vergessen, ebenso im Else-Teil, damit referenzierst du u.U. auf ein falsches Blatt.
2. du hast einmal die 1 Bei Tabelle vergessen
3. die ABS-Funktion funktioniert in VBA genauso wie in Excel:
Dim i As Long
Dim FinalRow As Integer
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To FinalRow
If Sheets("Tabelle1").Cells(i, 5) = "TIMEOUT" Then
Sheets("Tabelle1").Cells(i, 7).Value = ABS(Sheets("Tabelle1").Cells(i - 1, 4)) - ABS( _
Sheets("Tabelle1").Cells(i, 4))
ElseIf Sheets("Tabelle1").Cells(i, 5) = "COMPLETE" Then
Sheets("Daten Tabelle1").Cells(i, 7).Value = ABS(Sheets("Tabelle1").Cells(i - 1, 4)) -  _
ABS(Sheets("Tabelle1").Cells(i, 4))
Else
Sheets("Tabelle1").Cells(i, 7).Value = "'"
End If
Next i
gruß Daniel
Anzeige
AW: VBS Beträge in If Funktion
14.05.2020 16:42:16
Firmus
Hi Anni,
hi Regina,
ab und an spiele ich einfache VBAs bei mir durch (Training und Lernen).
Bei dieser Routine ist mir aufgefallen, dass die Finalrow auf "1" steht.
Damit läuft natürlich die For-Schleife nie durch.
Die Ursache könnten die leeren Zellen in Spalte "A" sein.
Ich habe A1:A8 mit x belegt, schon bekommt Finalrow den richtigen werden.
Ausserdem habe ich folgende Zeile ersetzt:
alt: .Cells(i, 7).Value = (-1 * .Cells(i - 1, 4)) - .Cells(i, 4)
neu: .Cells(i, 7).Value = Abs(.Cells(i - 1, 4)) - Abs(.Cells(i, 4))
Bei mir hat dann das Ergebnis gepasst.
Gruß,
Firmus
Anzeige
AW: VBS Beträge in If Funktion
14.05.2020 16:52:47
Anni
Danke Euch allen!
Es hat geklappt:)
Und Danke Firmus für den Tipp mit den x. in Spalte A. Hatte mich schon gewundert.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige