ist eine Art Case-Of Abfrage möglich?

micha

Erfahrenes Mitglied
Hallo Liebe Excelfreunde von Tutorials.de,

ich habe eine kleine Frage, bei der ich nicht weiter komme.
Ich habe eine Tabelle, in der für den Deutschunterricht Noten berechnet werden sollen.
Ein Teil der Gesamtnote soll der Fehlerquotient sein. Vom Bundesland gibt es für die Schulform Vorgaben, welcher Fehlerquotient welcher Note entspricht.

Ich würde nun gerne folgendes machen:
Die Endnote berechnet sich aus Teilnoten.
Eine der Teilnoten ist die Note, die sich aus dem Fehlerquotient ergibt.
Diese Teilnote soll in einer Zelle ausgegeben werden.
Die Eingaben zur Berechnung dieser Note sollen sein "Anzahl Wörter" und "Anzahl Fehler".

Der Fehlerquotient berechnet sich nach der Formel: Fehler * 100 / Anzahl Wörter.
gemäß Tabelle soll nun vom Wert des Fehlerquotienten auf die richtige Note geschlossen werden.
Die Tabelle ist hier aufgetragen:

Code:
Fehlerquotient	Note
1,5	= 15
2,1	= 14
2,7	= 12
3,3	= 11
3,9	= 9
4,5	= 8
5,1	= 6
5,7	= 5
6,3	= 3 
6,9	= 2
>6,9	= 0

Meine Frage ist nun:
Das Ergebnis der Fehlerquotientberechnung ist in Zelle A1,
Die Ausgabe in die Zielzelle soll allerdings Zelle B1 sein.
Wie realisiere ich dieses Umschreiben von Fehlerqoutient in Noten?

Eingabe ist Fehlerquotient, Ausgabe soll Note sein.


Ich hätte aus meinen Basic-Programmierungserfahrungen gesagt:
Case-of Fehlerquotient = im Bereich von 0 bis 1.5 then A1 = "15"
Case-of Fehlerquotient = im Bereich von 5.7 bis 5.1 then A1 = "6"
Oder geht das auch mit IF - THEN ?

Ich bin etwas ratlos. Danke für Eure Hilfe!

Micha
 
Hallo micha,

wenn du in VBA (Visual BASIC for Applications) arbeiten willst, dann schau mal bei SELECT CASE nach:
Code:
Select Case FQ
Case 0 To 1.5 ' DezimalPUNKT! 
   Note = 15
Case 1.6 To 2.1
   Note = 14
'...
Case Else
   Note = 0
end Case

Oder du siehst dir SVERWEIS() an, das lönnte auch helfen.
 
Also in VBA habe ich einfach mal das Case of entsprechend formuliert, allerdings weiß ich nicht wirklich (habe noch nie mit VBA gearbeitet), wie ich dieses Case-of dann einbinden kann in Excel.

Im Grunde würde ich erwarten, dass der Wert einer Excelzelle als Variable in VBA definiert wird. Diese Variable wird dann über die Caseof getestet, ob sie einen bestimmten Wert hat. Daraufhin die entsprechende Note in eine Zelle in Excel eingetragen.

Oder Eingabe in A1 startet VBA, Wert von A1 wird als Start für die Case-of verwendet, Ausgabe in A2 ist dann das Ergebnis der Case-of Abfrage.

Code:
 Select Case
Case 0 To 1.5
   Note = 15
Case 1.51 To 2.1
   Note = 14
Case 2.11 To 2.7
   Note = 12
Case 2.71 To 3.3
   Note = 11
Case 3.31 To 3.9
   Note = 9
Case 3.91 To 4.5
   Note = 8
Case 4.51 To 5.1
   Note = 6
Case 5.11 To 5.7
   Note = 5
Case 5.71 To 6.3
   Note = 3
Case 6.31 To 6.9
   Note = 2
Case Is > 6, 9
   Note = 0
Case Else
   Note = 0
end Case

Die Hilfe zu Sverweis habe ich mir durchgelesen, aber da müsste ja noch ein IF Block drumgebastelt werden, oder? Im Grunde nimmt die Funktion den Wert aus A1 gibt den Wert aus A2 aus.

Wie kann ich die VBA in die Formel von Excel einbinden und starten?
 
Moin Micha,

das war schon sehr gut! Mit leichten Änderungen kommst du zum Ergebnis.

Kopiere den folgenden Code in ein (neues) Modul der Mappe:
Code:
Option Explicit

Function NoteBerechnen(FehlerQuotient)
   Dim Note As Single
   Select Case FehlerQuotient
   Case 0 To 1.5
      Note = 15
   Case 1.51 To 2.1
      Note = 14
   Case 2.11 To 2.7
      Note = 12
   Case 2.71 To 3.3
      Note = 11
   Case 3.31 To 3.9
      Note = 9
   Case 3.91 To 4.5
      Note = 8
   Case 4.51 To 5.1
      Note = 6
   Case 5.11 To 5.7
      Note = 5
   Case 5.71 To 6.3
      Note = 3
   Case 6.31 To 6.9
      Note = 2
   Case Is > 6, 9
      Note = 0
   Case Else
      Note = 0
   End Select
   NoteBerechnen = Note
End Function
In die Ergebnis-Zelle schreibst du dann beispielsweise:
HTML:
=NoteBerechnen(A1)
wenn in A1 dein Fehlerquotient steht. Du verwendest also eine ganz normale UDF (UserDefined Function).
 
Hai,

um noch einmal auf das Thema SVERWEIS() zurück zu kommen.

=SVERWEIS(A1;C1: D11;2;WAHR)

Das sollte auch funktionieren.

A1 = Eingabe
A2 = Formel
C1: D11 = deine Wertepaare

Ciao Stefan
 
Zuletzt bearbeitet:
Einen riesen Dank Euch beiden fleissigen Helfern, ich habe es mit der VBA Methode realisieren können.
// Problem gelöst, Thread closeable
 
Zurück