Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

WENN-Befehlt konvertieren
#1
Hallo an alle Nutzer dieses Forums,

ich bin neu hier und hoffe, dass der eine oder andere mir bei meinem Problem helfen kann.

Ich muss ellenlange ( ca. 3800 Zeichen ), stark verschachtelte  WENN-Abfragen in "normalen" Computer-Code konvertieren.
Einen Teil habe ich bereits manuell umgesetzt, das dauert aber endlos.
Meine Frage ist nun : Gibt es irgendeine Möglichkeit die Umsetzung mit einer Excel- oder VBA-Funktion oder mit einem sonstigen Tool zu realisieren ?
Die Syntax des generierten Codes muß nicht unbedingt korrekt sein, es geht nur um die Logig, dass jedes IF sein Endif bekommt.

Hier der Anfang in Excel  :

=WENN(ODER(VMS!N27=4;VMS!N27=5);"Text-01-"&WENN(B10="XYZ";"Modulen";"Elementen")&", bestehend aus "&'A_V-D Support'!I2&" "&'A_V-D Support'!AU2&" mit je "&WENN('A_V-D Support'!V2="0";"";'A_V-D Support'!V2&WENN('A_V-D Support'!V2=1;" Text2-"&WENN(B10="XYZ";"Modul";"Element");" Text3t-"&WENN(B10="XYZ";"Modulen";"Elementen"))&WENN(UND('A_V-D Support'!AB2="0";'A_V-D Support'!AH2="0");"";WENN(ODER('A_V-D Support'!AB2="0";'A_V-D Support'!AH2="0");" und ";", "))) ..... ca. 3800 Zeichen

Das Ergebnis sollte dann ungefähr so aussehen :

IF VMS!N27 = 4 .or. VMS!N27 = 5 Then
    Text    = "Text-01
elseif B10 = "XYZ" Then

.....

end If

Vorab schon einmal vielen Dank

Rolf
Antworten Top
#2
Hi Rolf,


Zitat:Ich muss ellenlange ( ca. 3800 Zeichen ), stark verschachtelte  WENN-Abfragen in "normalen" Computer-Code konvertieren.

da behaupte ich jetzt ganz einfach: da ist per se schon einiges falsch gelaufen. :32: Wenn du uns zeigst, was du mit diesem Monster erreichen willst, können wir sicherlich mit anderen Funktionen dein Vorhaben auf ein erträgliches Formelmaß runterschrauben. Oder unsere VBA-Spezialisten (wenn es denn unbedingt eine Makrolösung sein muss) schustern dir ein vernünftiges Makro zum Erreichen deines Ziels.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#3
Hallo Rolf,

ein Tool für so was gibt es meines Wissens nicht Sad

Deine Logik hat auch einen Fehler. Du verbindest WENN-Ergebnisse u.a. mit & Da müsste der Anfang so aussehen:

Code:
IF Sheets("VMS").Range("N27").Value = 4 OR Sheets("VMS").Range("N27").Value = 5 Then
    strText    = "Text-01
End If
If Range("B10").Value = "XYZ" Then
   strText = strText & ";"Modul"
Else
   strText = strText & ";"Element"
End If
strText = strText & "en,  bestehend aus " & Sheets("A_V-D Support").Range("I2").Value & ...
'usw...

Text alleine als Variablenname solltest Du nicht nehmen, da das auch in VBA Bestandteil der Syntax ist.
Das mit dem fehlenden "en" bei Modul und Element ist eine kleine codeoptimierung Smile Ich habe das en dann weiter unten nur 1x programmiert.

Wenn Du viel auf einem Blatt zu tun hast, kannst Du das auch mit With abkürzen:
Code:
With Sheets("A_V-D Support")
  strText = strText & "en,  bestehend aus " & .Range("I2").Value & ...
  'weitere Anweisungen ...
End With

Wichtig ist dann vor der Bereichsangabe der Punkt: .Range ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Hallo,

erst einmal vielen Dank für die schnellen Antworten.

Ich glaube aber, dass ich meine Anftrage etwas zu kompliziert gestellt habe und die Beispielformel eher verwirrt hat.

Darum versuche ich es noch einmal einfach:

=WENN(D2=1;"Zeige 1";"Zeige 2")

Ergebnis :

if D2 = 1
   MeineZelle = "Zeige 1"
elseif
   MeineZelle = "Zeige 2"
end if

Es geht nur um die Logig der Abfrage.

Ich muss mehrere sehr lange und tief verschachtelte WENN-Abfragen aus einer vorgegebenen Tabelle in "normalen" Computer-Code umzusetzen.

Aber macht Euch bitte keine weiteren Gedanken. Es scheint ja nun einmal keine einfache Lösung zu geben. Ich habe mich daher entschlossen, selber eine Funktion zu programmieren, die dieses Problem löst.


Rolf
Antworten Top
#5
Hallo Rolf
Bei diesem einfachen Beispiel reicht Else.
Bei der Funktion zum Umwandeln musst du auch schauen, ob ein & Bestandteil des Textes ist oder zur Verkettung dient, ebenso das Ausrufezeichen. Eventuell hast Du auch noch andere Funktionen drin als Wenn und &...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#6
Hallo,

Zitat:Ich muss ellenlange ( ca. 3800 Zeichen ), stark verschachtelte  WENN-Abfragen

Da kann ich WillWissen nur beipflichten! Wer solche Formeln hat, hat sich weder Gedanken über das, was er will, gemacht, noch Excel nur ansatzweise verstanden! Ich habe schon einmal einem Ingenieur eine Formel von mehr als 8000 Zeichen auf 2500 gekürzt, einfach unter Anwendung der vorhandenen Excel-Funktionen! Allein aus dem vorgestellten Schnipsel sehe ich, dass man hier mit SVERWEIS oder WAHL einiges an Zeichen sparen könnte!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#7
Hi,

(10.10.2016, 07:28)BoskoBiati schrieb: Allein aus dem vorgestellten Schnipsel sehe ich, dass man hier mit SVERWEIS oder WAHL einiges an Zeichen sparen könnte!

oder als VBA-Code mit "Select Case"
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste