Thema Datum  Von Nutzer Rating
Antwort
15.08.2018 15:11:59 Clemens
NotSolved
15.08.2018 18:12:10 xlKing
Solved
15.08.2018 21:46:18 xlKing
NotSolved
Blau UDF Werte auf Ungleichheit prüfen und Leerzellen ignorieren
16.08.2018 00:51:59 Ulrich
NotSolved
19.08.2018 15:23:49 xlKing
NotSolved
23.08.2018 20:42:59 Clemens
NotSolved
25.08.2018 13:54:08 Gast62780
NotSolved

Ansicht des Beitrags:
Von:
Ulrich
Datum:
16.08.2018 00:51:59
Views:
1136
Rating: Antwort:
  Ja
Thema:
UDF Werte auf Ungleichheit prüfen und Leerzellen ignorieren

Hallo,

ich möchte bei diesem Code von xlKing auf die Gleitkommazahlenproblematik hinweisen:

Public Function CompVals(TestRange As Range) As String
  If IsNull(TestRange.Text) Then
     For Each v In TestRange
        If v <> "" Then
           If Not IsEmpty(w) And v <> w Then
              CompVals = "Not Equal"
              Exit Function
           End If
        w = v
        End If
     Next
  End If
  CompVals = "All Equal"
End Function

hier wird in der Bedingung w <> v auf Ungleichheit geprüft. Da die Variable w nicht deklariert ist, wird standardmäßig Variant/Double benutzt. Wenn eine Zahl auf zwei verschiedenen Rechenwegen berechnet wird, dann kann es sein, dass sich die beiden Ergebnisse in den letzten Nachkommastellen unterscheiden, obwohl sie eigentlich identisch sein müssten. Obiger Vergleich (w <> v) ergibt dann aber war, obwohl die Ergebnisse identische Zahlen repräsentieren, ohne identisch zu sein:

msgbox (1 <> 1.0000000000000001)
msgbox (1 = 1.0000000000000001)

Deswegen würde ich die Bedingung anders formulieren:

abs(v-w) > 0.00000000000001 

Die Nachkommastellen kannst du im Rahmen der Rechengenauigkeit von Excel und deinen Anforderungen anpassen (falls dir nichts besseres einfällt, sollte obiger Vorschlag funktionieren).

Grüße, Ulrich

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
15.08.2018 15:11:59 Clemens
NotSolved
15.08.2018 18:12:10 xlKing
Solved
15.08.2018 21:46:18 xlKing
NotSolved
Blau UDF Werte auf Ungleichheit prüfen und Leerzellen ignorieren
16.08.2018 00:51:59 Ulrich
NotSolved
19.08.2018 15:23:49 xlKing
NotSolved
23.08.2018 20:42:59 Clemens
NotSolved
25.08.2018 13:54:08 Gast62780
NotSolved