Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1928to1932
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

fehlerhafte UDF

fehlerhafte UDF
01.05.2023 12:01:17
Fred


Hallo Excel Profis,
zum Abschluss habe ich noch eine Frage zu einer benutzer-definierten-funktion.

Public Function AnzahlTor(Target, HZ, Optional Abstand = 10) As Long
Dim A
Dim i
Dim Mem As Long
Dim S As Long
Dim Z As Long
'On Error Resume Next
    A = Split(Target.Text, " ")
    For i = 0 To UBound(A)
        If A(i) = "" Then A(i) = 0
        Z = CLng(Split(A(i), ",")(0))
        A(i) = Application.Evaluate(A(i))
        If (Z  46 And HZ = 1) Or (Z >= 46 And HZ = 2) Then
            If Mem > 0 Then S = S - ((A(i) - Mem)  Abstand)
        End If
        Mem = A(i)
    Next
    AnzahlTor = S
End Function

https://www.herber.de/bbs/user/158981.xlsb
Ich habe da eine Funktion von vor Jahren ausgekramt, welche die Treffer innerhalb von jeweils 10 Minuten als Ergebnis ausgeben soll. Getrennt: 1.Hz, 2.Hz
Teilweise gibt diese richtig aus, teilweise mit zB #WERT!
Ich weis nicht, ob da
Z = CLng(Split(A(i), ",")(0))
falsch ist oder wo anders der Fehler liegt.

Kann ein Experte bitte mal drauf schauen?!

Gruss
Fred

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: fehlerhafte UDF
01.05.2023 12:26:09
GerdL
Moin Fred,

nur angetestet.
Public Function AnzahlTor(Target, HZ, Optional Abstand = 10) As Long
    
    Dim A
    Dim i
    Dim Mem As Long
    Dim S As Long
    Dim Z As Long

    A = Split(Target.Text, " ")
    For i = 0 To UBound(A)
        If A(i) = "" Then A(i) = 0
        Z = CLng(Split(A(i), ",")(0))
        A(i) = Replace(A(i), ",", ".")
        A(i) = Application.Evaluate(A(i))
        If (Z  46 And HZ = 1) Or (Z >= 46 And HZ = 2) Then
            If Mem > 0 Then S = S - ((A(i) - Mem)  Abstand)
        End If
        Mem = A(i)
    Next
    AnzahlTor = S

End Function
Gruß Gerd


Anzeige
AW: fehlerhafte UDF
01.05.2023 12:43:33
Fred
pffffffffff,
ich bin immer wieder baff, "wie Ihr" mal so "ungetestet" die "Dinger" schreibt ....
Ich bin noch nicht alle "Möglichkeiten" durchgegangen,- aber es gibt keine Fehlermeldung und das Ergebnis scheint auch zu stimmen.

Vielen "ungetesteten" Dank, GerdL

Gruss
Fred


oder vllt so...
01.05.2023 12:34:50
Oberschlumpf
Hi Fred,

änder mal...
A(i) = Application.Evaluate(A(i))
...um in...
A(i) = Application.Evaluate(CDbl(A(i)))
Grund:
Spalte A, z Bsp A14, enthält Kommawerte, nämlich: "7 45,3 54 86 90,5" (zumindest "sehe ich" Kommawerte, ich weiß aber nicht, ob das auch wirklich Kommawerte sein sollen)

Na ja, angenommen, ich interpretiere richtig, dann...
...in Deutschland verwenden wir als Trennzeichen für Kommawerte = das KOMMAZEICHEN
...international, so auch in VBA, wird als Trennzeichen für Kommawerte = der PUNKT verwendet

Damit nun auch VBA "dein/unser Komma" eben als solches erkennt, habe ich die CDBL-Funktion "eingebaut", die einen deutschen Kommawert in einen internat. Kommawert umwandelt.

Hilfts?

Ciao
Thorsten


Anzeige
AW: oder vllt so...
01.05.2023 12:52:44
Fred
Moin Thorsten,
Jo, auch deine Korrektur paßt anscheinend.
GerdL hatte zuvor u.a. "Replace ..." hinzugefügt,
dein
A(i) = Application.Evaluate(CDbl(A(i)))
auf die ursprüngliche Version "drauf gesetzt" macht die Funktion anscheinend ebenfalls fehlerfrei.

Vielen Dank !!

Gruss
Fred


AW: fehlerhafte UDF
01.05.2023 13:25:59
onur
Hier ist der Fehler;
 If A(i) = "" Then A(i) = 0
korrekt:
 If A(i) = "" Then AnzahlTor = 0 : Exit Function


Anzeige
AW: fehlerhafte UDF
01.05.2023 13:49:19
Fred
Hallo Onur,
tzz. das ist die dritte richtige Korrektur.
1. von GerdL
A(i) = Replace(A(i), ",", ".")
2. von Thorsten
A(i) = Application.Evaluate(CDbl(A(i)))
und deine:
If A(i) = "" Then AnzahlTor = 0 : Exit Function
Auch deine passt!
Danke für die Aufmerksamkeit und Mühe!

Gruss
Fred


AW: fehlerhafte UDF
01.05.2023 14:48:36
ralf_b
wenn ich das richtig sehe stimmt deine UDF nicht mehr. Da auch eine erste Halbzeit länger als 46 Minuten gehen kann.


Anzeige
AW: fehlerhafte UDF
02.05.2023 00:06:00
Fred
Hallo Ralf,
alles gut! Die "Trefferzeiten" sind deshalb in der 45ten und 90sten Minute (wenn "Nachspielzeit") als Dezimalzeit umgewandelt. Ursprünglich (bei download der Daten) steht ja (wenn Nachspielzeit) zB 45+3 oder 90+6 usw. Daraus habe ich zB 45,3 und 90,6 gemacht ...
Wenn eine "Nachspielzeit" länger als 10 Minuten dauert und dann ein Tor fällt (war bisher noch nicht) weis ich allerdings nicht, ob es immer noch funzt,- denke aber schon.

Gruß
Fred


AW: fehlerhafte UDF
02.05.2023 14:26:56
ralf_b
längste Nachspielzeit läßt sich googlen.


AW: fehlerhafte UDF
02.05.2023 14:30:11
Daniel
Hi
sollten Nachspielzeiten mit 10 oder mehr Minuten vorkommen können, dann könntest du die Minuten einfach durch 100 teilen und nicht durch 10,
dann ist eine Minute Nachspielzeit 90,01 und Zehn Minuten 90,10
Gruß Daniel

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige