Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Gleiche Zahlen nicht als gleich erkannt

Forumthread: Gleiche Zahlen nicht als gleich erkannt

Gleiche Zahlen nicht als gleich erkannt
04.07.2015 15:06:04
Flori

Hallo zusammen,
ich schreibe gerade ein Programm zur Notenverwaltung, und dort soll je nach erreichter Punktezahl die Note berechnet werden.
Die erreichten Punkte werden in der Variable punkte gespeichert, der Punktebereich für jede Note liegt zwischen note_von und note_bis.
Dies funktioniert bei allen Noten einwandfrei, nur bei Note 5 klappts einfach nicht!
Wenn ich zur Kontrolle folgende Ausgabe anschaue:
MsgBox punkte
MsgBox note5_von
MsgBox punkte = note5_von
dann zeigt es an: 7 - 7 - Falsch
Wie ist denn das möglich? Die beiden Zahlen stimmen genau überein! Und bei allen anderen Noten funktionierts ja auch?
Wäre sehr dankbar, wenn mir da jemand weiterhelfen könnte! :)

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gleiche Zahlen nicht als gleich erkannt
04.07.2015 15:11:15
Hajo_Zi
bei mir wird Wahr angezeigt.
Option Explicit
Sub Note()
Dim Punkte As Integer
Dim Note5_Von As Integer
Punkte = 7
Note5_Von = 7
MsgBox Punkte
MsgBox Note5_Von
MsgBox Punkte = Note5_Von
End Sub

zeig den gesammten Code! o.T.
04.07.2015 15:22:10
Sepp
Gruß Sepp

Anzeige
zeig den gesammten Code! o.T.
04.07.2015 15:22:11
Sepp
Gruß Sepp

AW: Gleiche Zahlen nicht als gleich erkannt
04.07.2015 16:49:42
Flori
Hallo,
ich muss wohl erst mal den ganzen Coder der Funktion posten.. :)
Function BerechneNote(zelle As Range) As Integer
Dim punkte As Double
Dim note As Integer
punkte = zelle.Value
'Punkte zu jeder Notenstufe bzw. Punktestufe zuordnen
Dim note1_von As Double
Dim note1_bis As Double
Dim note2_von As Double
Dim note2_bis As Double
Dim note3_von As Double
Dim note3_bis As Double
Dim note4_von As Double
Dim note4_bis As Double
Dim note5_von As Double
Dim note5_bis As Double
Dim note6_von As Double
Dim note6_bis As Double
With Worksheets("Notenschlüssel")
note1_bis = .Range("C6").Value
note1_von = .Range("D6").Value
note2_bis = .Range("C7").Value
note2_von = .Range("D7").Value
note3_bis = .Range("C8").Value
note3_von = .Range("D8").Value
note4_bis = .Range("C9").Value
note4_von = .Range("D9").Value
note5_bis = .Range("C10").Value
note5_von = .Range("D10").Value
note6_bis = .Range("C11").Value
note6_von = .Range("D11").Value
End With
With Worksheets("Notenschlüssel")
MsgBox punkte
MsgBox note5_von
MsgBox punkte = note5_von
'Bewertung mit Notenskala
If Tabelle2.OptionButton1 = True Then
If punkte >= note6_von And punkte <= note6_bis Then
note = 6
End If
If punkte >= note5_von And punkte <= note5_bis Then
note = 5
End If
If punkte >= note4_von And punkte <= note4_bis Then
note = 4
End If
If punkte >= note3_von And punkte <= note3_bis Then
note = 3
End If
If punkte >= note2_von And punkte <= note2_bis Then
note = 2
End If
If punkte >= note1_von And punkte <= note1_bis Then
note = 1
End If
Select Case punkte
Case note6_von To note6_bis
note = 6
Case note5_von To note5_bis
note = 5
Case note4_von To note4_bis
note = 4
Case note3_von To note3_bis
note = 3
Case note2_von To note2_bis
note = 2
Case note1_von To note1_bis
note = 1
End Select
End If
End With
BerechneNote = note
End Function

Anzeige
AW: Gleiche Zahlen nicht als gleich erkannt
04.07.2015 16:58:08
Sepp
Hallo Flori,
sorry, die Funktion ist doch Nonsens! Innerhalb einer Tabellen-Funktion fix auf ein anderes Blatt zu verweisen ist ja gruselig, wenn schon, dann werden die Bereiche als Argument übergeben.
Außerdem ist deine Aufgabe mit ganz einfachen Formeln zu lösen, wozu eine eigene UDF?
Zu deinem ursprünglichen Problem: Im Blatt "Notenschlüssel", Zelle D10 liegt wohl dein Problem.
Gruß Sepp

Anzeige
Z. B. so.
04.07.2015 17:08:46
Sepp
Tabelle1

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Gleiche Zahlen nicht als gleich erkannt in Excel


Schritt-für-Schritt-Anleitung

Um das Problem zu lösen, dass Excel gleiche Zahlen nicht als gleich erkennt, kannst du folgende Schritte befolgen:

  1. Variable Typen überprüfen: Stelle sicher, dass die Variablen, die du verwendest (z.B. punkte, note5_von) denselben Datentyp haben. In deinem Fall scheint punkte als Double und note5_von als Integer deklariert zu sein.

    Dim punkte As Double
    Dim note5_von As Integer
  2. Zahlen vergleichen: Um sicherzustellen, dass der Vergleich funktioniert, kannst du die Variablen in denselben Datentyp konvertieren. Zum Beispiel:

    MsgBox CStr(punkte) = CStr(note5_von)
  3. Überprüfen der Werte: Verwende MsgBox, um die Werte der Variablen zu überprüfen, bevor du den Vergleich machst. Das hilft dir zu sehen, ob die Werte wirklich identisch sind.

  4. Debuggen des Codes: Füge zusätzliche MsgBox-Befehle in deinem Code hinzu, um den Fluss der Werte zu verfolgen.


Häufige Fehler und Lösungen

  • Fehler: Falsche Datentypen: Wenn du Integer und Double mischst, kann es zu unerwarteten Ergebnissen kommen. Überprüfe die Datentypen und passe sie an.

  • Lösung: Konvertiere die Werte vor dem Vergleich, wie oben beschrieben.

  • Fehler: Unsichtbare Zeichen: Manchmal können unsichtbare Zeichen (z.B. Leerzeichen) in den Zellen vorhanden sein, die den Vergleich stören.

  • Lösung: Verwende die Trim-Funktion, um solche Zeichen zu entfernen:

    punkte = Trim(zelle.Value)

Alternative Methoden

Wenn du Schwierigkeiten mit den VBA-Funktionen hast, kannst du auch einfache Excel-Formeln verwenden. Hier ist ein Beispiel:

  • Verwende die Funktion WENN, um die Noten zu berechnen. Dies ist oft einfacher und weniger fehleranfällig als komplexe VBA-Funktionen.

    =WENN(A1>=D10; 5; WENN(A1>=D9; 4; ...))

Praktische Beispiele

Hier ist ein einfaches Beispiel, um das Konzept zu verdeutlichen:

Angenommen, du hast in Zelle A1 die Punktzahl und in den Zellen D10 und D9 die Grenzwerte für die Noten:

Function BerechneNote(zelle As Range) As Integer
    Dim punkte As Double
    punkte = zelle.Value

    If punkte >= Range("D10").Value Then
        BerechneNote = 5
    ElseIf punkte >= Range("D9").Value Then
        BerechneNote = 4
    End If
    ' Weitere Notenlogik hier
End Function

Tipps für Profis

  • Einsatz von Option Explicit: Verwende immer Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.

  • Verwendung von Debugging-Werkzeugen: Nutze den Debugger in der VBA-Umgebung, um Schritt für Schritt durch deinen Code zu gehen.

  • Klare Strukturierung des Codes: Halte deinen Code sauber und gut strukturiert, um die Wartbarkeit zu erhöhen.


FAQ: Häufige Fragen

1. Warum zeigt Excel "Falsch" an, obwohl die Zahlen gleich sind? Das kann an unterschiedlichen Datentypen oder unsichtbaren Zeichen in den Zellen liegen.

2. Wie kann ich sicherstellen, dass meine Zahlen korrekt verglichen werden? Achte darauf, die Datentypen zu konvertieren und verwende Trim, um unerwünschte Leerzeichen zu entfernen.

3. Ist es besser, VBA oder Excel-Formeln zu verwenden? Das hängt vom Anwendungsfall ab. Für einfache Berechnungen sind Excel-Formeln oft einfacher und weniger fehleranfällig als komplexe VBA-Logik.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige