Wenn Funktion

  • #1
L

L.Faas

Guest
Hallo,
ich habe ein Problem mit einer Wenn - Funktion.
Eine verschachtelte Wenn - Funktion soll einen Wahrheitswert (Kontrollkästchen) prüfen und ggf. eine Bezeichung z.B A zurückliefern.
Ansonsten soll die Funktion eine weitere Prüfung des Wahrheitswertes
durchführen
=WENN(S6=WAHR;A;WENN(S7=WAHR;B;WENN(S8=WAHR;C; usw.)))


Leider ist bei einer Verschachtelung nach der siebten Prüfung eine weitere Prüfung nicht mehr möglich.
Eine Erweiterung der Funktion durch das + Zeichen ist nur bei alphanumerischen Werten, nicht jedoch bei einer Wahrheitsprüfung
möglich.
Hat jemand irgend eine Idee wie ich Excel doch dazu bewegen kann, mehr als nur sieben Prüfungen durchzuführen.

Vielen Dank
Lothar :)
 
  • #2
Hallo L.Faas,

ich hab dir mal ein Beispiel zusammengestellt, wie du deine Abfrage in einer Funktion(Makro) erstellen  und dann als Formel weiter benutzen kannst.


Funktion (Makro) für die Verwendung in Formeln erstellen:

a) deine Excel-Arbeitsmappe öffnen
b) VB-Editor öffnen mit Alt+F11
c) mit rechter Maustaste im Projekt-Fenster  VBAProject(Dateiname) selektieren
   -> Einfügen -> Modul
  (es öffnet sich ein Modul-Fenster)
d) den Makro per copy and paste in dieses Modulfenster kopieren


Code:
Function BereichPruefenAufWahr_RetAbisZ(myRange As Range) As Variant
'*** es kann als Range eine zusammenhängender Bereich
'*** einer Spalte angegeben werden
'***
'*** Vom Anfang bis zum Ende des Bereiches werden die
'*** Zellinhalte auf WAHR geprüft
'*** Ist keine Inhalt WAHR liefert die Funktion KEIN WERT WAHR
'*** Andernfalls liefert sie die Buchstaben A -Z,
'*** abhängig von der Fundstelle.
'*** Also wenn die 1.  Zelle der Wert WAHR enthält, liefert sie A
'*** Also wenn die 2.  Zelle der Wert WAHR enthält, liefert sie B
'*** Also wenn die 26. Zelle der Wert WAHR enthält, liefert sie Z
'***
'*** Ist der Bereich
'*** - nicht zusammenhängend
'***   gibt die Funktion BEREICH NICHT ZuSAMMENHAENGEND zurück
'*** - nicht in einer Spalte
'***   gibt die Funktion BEREICH ENTHAELT MEHR ALS EINE SPALTE zurück
'*** - größer als 26 Zellen
'***   gibt die Funktion BEREICH ENTHAELT MEHR ALS 26 ZELLEN zurück
'***
  
  Dim l_cnt As Long, Zelle As Range
  Dim f As Variant
  f = Array( _
        A, B, C, D, E, F, G, H, I, J, K, L, M, _
        N, O, P, Q, R, S, T, U, V, W, X, Y, Z)
  
 ->Pruefen, ob r ein zusammenhängender Bereich ist
  If myRange.Areas.Count > 1 Then
    BereichPruefenAufWahr_RetAbisZ = BEREICH NICHT ZuSAMMENHAENGEND
    Exit Function
  End If
  
 ->Pruefen, ob r in einer Spalte liegt
  If myRange.Columns.Count > 1 Then
    BereichPruefenAufWahr_RetAbisZ = BEREICH ENTHAELT MEHR ALS EINE SPALTE
    Exit Function
  End If
  
 ->Pruefen, ob r mehr als 26 Zellen beinhaltet
  If myRange.Count > 26 Then
    BereichPruefenAufWahr_RetAbisZ = BEREICH ENTHAELT MEHR ALS 26 ZELLEN
    Exit Function
  End If
  
 ->Rückgabe-Kennung KEIN WERT WAHR setzen
  BereichPruefenAufWahr_RetAbisZ = KEIN WERT WAHR
  
  l_cnt = -1
 ->Zellinhalte der Reihe nach prüfen
  For Each Zelle In myRange
    l_cnt = l_cnt + 1
   ->Inhalt WAHR ?
    If Zelle.Value = True Then
     ->Buchstabe für Rückgabe-Kennung setzen
      BereichPruefenAufWahr_RetAbisZ = f(l_cnt)
      Exit For
    End If
  Next
  Set Zelle = Nothing
End Function

e) Speichern mit Alt+S
f) VB-Editor schliessen mit Alt+Q

Jetzt steht dir für die Formel eine Funktion BereichPruefenAufWahr_RetAbisZ zur Verfügung.

Formel erstellen:
1) Gehe in die Zelle in der die Auswertung erscheinen soll.
2) schreibe ein Gleichheitszeichen
   (es wird in der Symbolleiste die Drop-Down-Auswahl für Funktionen angezeigt)
3) im der Drop-Down-Auswahl für Funktionen wählst du
   'weitere Funktionen...'
   (das Fenster->Funktionen einfügen' öffnet sich)
4) im Fenster->Funktionen einfügen' wählst Du->Benutzerdefiniert'
   (im Fenster->Funktion:' erscheint BereichPruefenAufWahr_RetAbisZ)
5) BereichPruefenAufWahr_RetAbisZ mit einem Doppelklick auswählen
   (Es öffnet sich ein Formel-Fenster der Funktion BereichPruefenAufWahr_RetAbisZ
    in dem der auszuwertende Bereich eingegeben werden muß)
6) Den Bereich entwerder als S6:S31 eingeben
    oder auf das Symbol zur Bereichsmarkierung klicken und den Bereich mit der Maus selektieren
7) Ende-Button

Fertig  :D

Gruß Matjes  ;)
 
  • #3
Hallo Matjes.
Vielen Dank für den Tipp.
Ich werde es mal ausprobieren.
Es kann aber etwas dauern bis ein Feedback kommt,
deshalb an dieser Stelle schon mal vielen Dank für die Mühe.
die DU Dir gemacht hast.

L.Faas
 
  • #4
Hallo,

in solchen Fällen arbeite ich gern mit Index-Zellen:

=WENN(S6=WAHR;A;WENN(S7=WAHR;B;WENN(S8=WAHR;C;...;...;...; C8)))

in Zelle C8:

=WENN(S13=WAHR;H;WENN(S14=WAHR;I;WENN(S15=WAHR;J;...;...;...; C9)))

usw. usf.

Fibo
 
Thema:

Wenn Funktion

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben