mehr als 30 Wenn-Dann ?



Excel-Version: 5.0/7.0
nach unten

Betrifft: mehr als 30 Wenn-Dann ?
von: Marc Münster
Geschrieben am: 16.07.2002 - 13:47:32

Hallo,

wer kennt eine Lösung um mehr als 30 Wenn-Dann Funktionen in einer Formel zu bearbeiten.
Bisher sieht die Formel so aus:
Zwischen den "" steht ein Text

WENN(B4="";1010000)+WENN(B4="";1010100)+WENN(B4="";1010200)+WENN(B4="";1010300)+WENN(B4="";1010302)+WENN(B4="";1010303)+WENN(B4="";1010304)+WENN(B4="";1010400)+WENN(B4="";1010401)+WENN(B4="";1010402)+WENN(B4="";1010600)+WENN(B4="";1010800)+WENN(B4="";1011100)+WENN(B4="";1011400)+WENN(B4="";1011401)+WENN(B4="";1011500)+WENN(B4="";1011800)+WENN(B4="";1011900)+WENN(B4="";1012000)+WENN(B4="";1012100)+WENN(B4="";1012200)+WENN(B4="";1012300)+WENN(B4="";1012400)+WENN(B4="";1012500)+WENN(B4="";1012600)+WENN(B4="";1012700)+WENN(B4="";1012800)+WENN(B4="";1012900)+WENN(B4="";1013000)+WENN(B4="";1013100)

Formel funktioniert, aber leider nicht mit mehr Wenn-Danns.

Mit freundlichen Grüßen

Marc Münster

nach oben   nach unten

Re: mehr als 30 Wenn-Dann ?
von: andreas e
Geschrieben am: 16.07.2002 - 13:55:20

oh gott !!!!

wäre da nicht ein sverweis angesagt ??
was macht die formel denn ?
Poste malö den tabellenaufbau oder sieh dir auf meiner seite im downloadbereich für excel die bsp sverweise an

gruß
andreas e

http://www.skripteundaufgaben.de viele kostenlose Downloads und Links zu EXCEL und mehr

nach oben   nach unten

Re: mehr als 30 Wenn-Dann ?
von: mathias r.
Geschrieben am: 16.07.2002 - 13:56:21

Mach dir in VBA eine Benutzerdefinierte Funktion
die du in der Zelle aufruftst mit:
=MeineFkt(B4)

Public Function MeineFkt(rngX as range) as Variant
dim vTmp as Variant
Select case rngX.Value
case "tralala"
vTmp = 1010000
case "xyz"
vTmp= 1010100
case "was anderes"
vTmp = 1010200
'usw., usw.
End Select
MeineFkt=vTmp
End Function

nach oben   nach unten

Re: mehr als 30 Wenn-Dann ?
von: Robert M.
Geschrieben am: 16.07.2002 - 13:57:50

Hallo Marc,
im MS-Office-Forum fand ich folgende Beiträge;
damit könnte Dein Problem gelöst sein.
Servus, Robert.

ab hier: der Beitrag aus dem dem MS-Office-Forum:

Goldberg
Mitglied
Benutzer # 6271


erstellt am: 15. Juli 2002 14:07
--------------------------------------------------------------------------------
Hi Leute,
Habe in einer Excel-Tabelle eine etwas längere Funktion, welche nicht so recht funktionieren möchte.

Die Funktion soll lediglich den Inhal eines Feldes Prüfen und wenn er einen Bestimmten Wert hat Ihn durch einen bestimmten anderen Wert ersetzen.

Nun ist diese Funktion anscheinend zu lang und Excel kommt damit nicht zu recht. Der Code an und für sich ist in Ordnung aber bei der 10ten WENN Funktion bricht Excel ab.

Hier der Code:
=WENN(X8=1;"1";WENN(X8=2;"2";WENN(X8=3;"3";WENN(X8=4;"4";WENN(X8=6;"6";WENN(X8=7;"7";WENN(X8=8;"8";
WENN(X8=10;"A";WENN(X8=11;"B";WENN(X8=12;"C";WENN(X8=13;"D";WENN(X8=14;"E";WENN(X8=15;"F";WENN(X8=16;"G";
WENN(X8=17;"H";WENN(X8=18;"I";WENN(X8=19;"J";WENN(X8=20;"K";WENN(X8=21;"L"; WENN(X8=22;"M";WENN(X8=23;"N";
WENN(X8=24;"O";WENN(X8=25;"P";WENN(X8=26;"Q";WENN(X8=27;"R";WENN(X8=28;"S";WENN(X8=29;"T";WENN(X8=30;"U";
WENN(X8=31;"V";WENN(X8=32;"W";WENN(X8=33;"X"; WENN(X8=34;"Y";WENN(X8=35;"Z";WENN(X8=36;"-";
WENN(X8=37;".";WENN(X8=38;" ";WENN(X8=39;"$";WENN(X8=40;"/";
WENN(X8=41;"+";WENN(X8=42;"%";"nicht vorhanden")))))))))))))))))))))))))))))))))))))))

Die schließenden Klammern am Ende sind nicht komplett aber das ist nicht der Fehler.

Wer kann mir weiterhelfen.

Ich habe Excel2000 auf einem WIN2000 System

Danke für Eure Hilfe

Goldi

Moderatoren-Anmerkung: Code aus Gründen der Lesbarkeit aufgeteilt.

[ 15. Juli 2002: Beitrag editiert von: jinx ]


--------------------------------------------------------------------------------
Beiträge: 41 | von: Hessen | Registriert seit: Mrz 2002 | IP: gespeichert

GF
Mitglied
Benutzer # 3719

erstellt am: 15. Juli 2002 14:23
--------------------------------------------------------------------------------
Hallo Goldi,
das stimmt, die WENN-Funktionen sind begrenzt schachtelbar, wobei ich dachte, dass Excel schon beim achten WENN zu streiken beginnt.
Beziehst Du Dich immer auf das gleiche Feld, das geprüft werden soll? Dann mach das doch per VBA, z. B.

Sub Bedingung()
Dim Feldinhalt As String
Feldinhalt = ActiveSheet.Range("X8").Value
Select Case Feldinhalt
Case "A": ActiveSheet.Range("X8").Value = 55
Case "B": ActiveSheet.Range("X8").Value = 104
'usw.
End Select
'oder alternativ prüfen, ob eine Zahl vorliegt
'wenn keine Zahl, dann 5555
If IsNumeric(Feldinhalt) = False Then
ActiveSheet.Range("X8").Value = 5555
End If
End Sub

Hilft Dir das weiter?
Gruß
GF


--------------------------------------------------------------------------------
Beiträge: 45 | von: D-48155 Münster | Registriert seit: Nov 2001 | IP: gespeichert

Goldberg
Mitglied
Benutzer # 6271


erstellt am: 15. Juli 2002 14:34
--------------------------------------------------------------------------------
Hi GF,
leider bin ich nicht der VBA oder Excel Fachmann, bin ehrlich gesagt sogar schon froh das ich diese WENN Verschachtelung so hinbekommen habe.

Die Felder beziehen sich nicht immer auf das selbe Feld sondern wenn es z.B.
B2 dann bezieht es sich auf A2,wenn
B3 dann A3, wenn
B4 dann A4, usw.

Bitte gib mir doch noch einen Tip denn mit dem Code kann ich nicht all zu viel anfangan.
Und wenne s eben nur per Code gehen sollte dann versuch mir doch bitte kurz zu beschreiben wo der Code hinkommt.
Danke

Gruß
Goldberg


--------------------------------------------------------------------------------
Beiträge: 41 | von: Hessen | Registriert seit: Mrz 2002 | IP: gespeichert

GF
Mitglied
Benutzer # 3719

erstellt am: 15. Juli 2002 15:07
--------------------------------------------------------------------------------
Hi Goldi,
eine andere Lösung als mit VBA fällt mir auf die Schnelle nicht ein.
Du kannst in VBA gehen per Alt + F11, dann kopierst Du den Code in das entsprechende Codefenster des Tabellenblatts.
Der Index zählt die Anzahl der betroffenen Zeilen ab, prüft deren Wert und schreibt in die Spalte B den gewünschten Wert. Wenn Du 500 Zeilen hast, dann ändere die 150 in 500 um.
Anschließend drückst Du in VBA auf F5 und der Code läuft ab, oder Du kannst von Excel aus das Makro aufrufen per Alt + F8.


Sub Bedingung()
Dim Feldinhalt As String, index As Integer

For index = 1 To 150
Feldinhalt = ActiveSheet.Cells(index, 1).Value
Select Case Feldinhalt
Case "A": ActiveSheet.Cells(index, 2).Value = 55
Case "B": ActiveSheet.Cells(index, 2).Value = 104
'usw.
Case Else: ActiveSheet.Cells(index, 2).Value = "Kein Wert"
End Select
Next index

End Sub

Am besten machst Du von Deinem Arbeitsblatt vorher eine Sicherheitskopie!!!
Klappt es jetzt?
GF


--------------------------------------------------------------------------------
Beiträge: 45 | von: D-48155 Münster | Registriert seit: Nov 2001 | IP: gespeichert

Pittchen
Mitglied
Benutzer # 211

erstellt am: 15. Juli 2002 15:37
--------------------------------------------------------------------------------
Moin Leute,
@Goldi:
man kann schon auch ohne VBA verschachteln, nämlich so:
=WENN(A1=1;"1";WENN(A1=2;"2";WENN(A1=3;"3";"")))&WENN(A1=4;"4";WENN(A1=5;"5";WENN(A1=6;"6";"")))
&WENN(A1=7;"7";WENN(A1=9;"9";WENN(A1=10;"10";"")))&WENN(A1=11;"11";WENN(A1=12;"12";W ENN(A1=13;"13";"")))

damit kannst in jeder Wenn-Schachtel 7 oder achtmal schachteln und diese durch das & verknüpfwen, wie weit das geht, habe ich noch nicht getestet, aber es geht ziemlich weit

Viel Erfolg

Gruß Pittchen

Moderatoren-Anmerkung: Code aus Gründen der Lesbarkeit aufgeteilt.

[ 15. Juli 2002: Beitrag editiert von: jinx ]


--------------------------------------------------------------------------------
Beiträge: 617 | von: Deutschland, 60529 Frankfurt | Registriert seit: Nov 2000 | IP: gespeichert

jinx
Moderator
Benutzer # 901

erstellt am: 15. Juli 2002 18:34
--------------------------------------------------------------------------------
Moin, Leute,
der Übersichtlichkeit halber werde ich die Beiträge mal editieren, da sie sonst nur mit Scrollen zu entziffern sind...

Die Vorschau hätte die Ausmaße des "Dilemmas" angezeigt.

Und ich hätte mich dieses Problems auch nicht über ein Makro angenommen, sondern über ein Ereignis oder eine Funktion, aufbauend auf einer Select-Case-Schleife (nein, die schreibe ich nicht!!!), wie z.B. unter Excel VBA-Programmierung dargelegt.

[ 15. Juli 2002: Beitrag editiert von: jinx ]

--------------------

cu
jinx


Folgende Tools werden zur optischen Aufbereitung eingesetzt: Code Converter von Stefan; Tabellentool von StrgAltEntf


--------------------------------------------------------------------------------
Beiträge: 2240 | von: Northern Hemisphere | Registriert seit: Feb 2001 | IP: gespeichert

Goldberg
Mitglied
Benutzer # 6271


erstellt am: 16. Juli 2002 09:32
--------------------------------------------------------------------------------
Hallo Zusammen,
wollte mich nur bei allen Beteiligten bedanken, denn nun bin ich dank Euch zu einer funktionierenden Version gekommen.

Ich habe die für mich einfachste Lösung gewäht und zwar den Vorschlag von "Pittchen".
Leider kann ich Euch zwar nicht sagen ab wann dann diese Version Ecxel ein Problem bereitet aber mit meinen 43 Verschachtelungen hat es einwandfrei funktioniert.

Hier der Code den ich nun benutze:

=WENN(X2=0;"0";WENN(X2=1;"1";WENN(X2=2;"2";WENN(X2=3;"3";WENN(X2=4;"4";WENN(X2=5;"5";""))))))&
WENN(X2=6;"6";WENN(X2=7;"7";WENN(X2=8;"8";WENN(X2=9;"9";WENN(X2=10;"A";"")))))&
WENN(X2=11;"B";WENN(X2=12;"C";WENN(X2=13;"D";WENN(X2=14;"E";WENN(X2=15;"F";"")))))&
WENN(X2=16;"G";WENN(X2=17;"H";WENN(X2=18;"I";WENN(X2=19;"J";WENN(X2=20;"K";"")))))&
WENN(X2=21;"L";WENN(X2=22;"M";WENN(X2=23;"N";WENN(X2=24;"O";WENN(X2=25;"P";"")))))&
WENN(X2=26;"Q";WENN(X2=27;"R";WENN(X2=28;"S";WENN(X2=29;"T";WENN(X2=30;"U";"")))))&
WENN(X2=31;"V";WENN(X2=32;"W";WENN(X2=33;"X";WENN(X2=34;"Y";WENN(X2=35;"Z";"")))))&
WENN(X2=36;"-";WENN(X2=37;".";WENN(X2=38;" ";WENN(X2=39;"$";WENN(X2=40;"/";"")))))&
WENN(X2=41;"+";WENN(X2=42;"%";""))


Vielen Dank noch mal an alle und bis zum nächsten mal

Gruß
Goldi

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Bundesliga Tabelle"