EXCEL IF Bedingung in VBA erstellen
Hallo Zusammen,
Wie kann ich mehrere If Bedingungen in VBA abbilden und diese dann durch einen Button in Excel ausführen?
Ich habe eine IF Bedingungen in Excel erstellt, aber ich verliere die Übersicht, ich würde es gerne in VBA abbilden.
Könnt ihr mir bitte helfen? Das u.a. ist nur ein Beispiel.
=IF(ISNUMBER(FIND("SCBV",EZ2)),"Montag",IF(ISNUMBER(FIND("TRBV",EZ2)),"Dienstag",IF(ISNUMBER(FIND("TWBV",EZ2)),"Mittwoch",IF(ISNUMBER(FIND("TTBV",EZ2)),"Donnerstag",IF(ISNUMBER(FIND("TVBV",EZ2)),"MORGEN",IF(ISNUMBER(FIND("VZBV",EZ2)),"FRÜH",IF(ISNUMBER(FIND("VZBT",EZ2)),"NACHMITTAG",IF(ISNUMBER(FIND("PUBV",EZ2)),"MITTAG",IF(ISNUMBER(FIND("VYBV",EZ2)),"NEU",IF(ISNUMBER(FIND("VZAV",EZ2)),"HAUS",IF(ISNUMBER(FIND("RCBV",EZ2)),"NACHT",IF(ISNUMBER(FIND("RCBW",EZ2)),"NACHTT",IF(ISNUMBER(FIND("QRBV",EZ2)),"MALE",IF(ISNUMBER(FIND("QRBW",EZ2)),"HUBERT",IF(ISNUMBER(FIND("QTBV",EZ2)),"THOMAS",IF(ISNUMBER(FIND("QVBW",EZ2)),"THOMASa",IF(ISNUMBER(FIND("QVBV",EZ2)),"THOMASaa",IF(ISNUMBER(FIND("ZYVJ",EZ2)),"TD4",IF(ISNUMBER(FIND("HQVH",EZ2)),"THOMASb",IF(ISNUMBER(FIND("HQCH",EZ2)),"neuue",IF(ISNUMBER(FIND("ZYTV",EZ2)),"Bernd",IF(ISNUMBER(FIND("ZZTV",EZ2)),"Melanie",IF(ISNUMBER(FIND("IUTV",EZ2)),"Melanie",IF(ISNUMBER(FIND("HSCH",EZ2)),"Gregor",IF(ISNUMBER(FIND("HSVH",EZ2)),"MAX",IF(ISNUMBER(FIND("JCMJ",EZ2)),"Schuster",IF(ISNUMBER(FIND("JCDJ",EZ2)),"Mario",IF(ISNUMBER(FIND("JCCJ",EZ2)),"Nexu",IF(ISNUMBER(FIND("JCZJ",EZ2)),"Conny",IF(ISNUMBER(FIND("JCXJ",EZ2)),"Boris",IF(ISNUMBER(FIND("JCPJ",EZ2)),"Rain",IF(ISNUMBER(FIND("JCHJ",EZ2)),"Meld",IF(ISNUMBER(FIND("JCWJ",EZ2)),"NIX",IF(ISNUMBER(FIND("ZYAJ",EZ2)),"NEUOYY",IF(ISNUMBER(FIND("PUBT",EZ2)),"SIsss4",IF(ISNUMBER(FIND("JCYJ",EZ2)),"MEIEE",IF(ISNUMBER(FIND("VYBT",EZ2)),"SF4",IF(ISNUMBER(FIND("VZAT",EZ2)),"NEUTOO",IF(ISNUMBER(FIND("SQVH",EZ2)),"NEUEEEE",IF(ISNUMBER(FIND("IUVJ",EZ2)),"MONDEE",IF(ISNUMBER(FIND("TSVH",EZ2)),"NISCCH",IF(ISNUMBER(FIND("JCEJ",EZ2)),"NEUEUEEE",IF(ISNUMBER(FIND("JCBJ",EZ2)),"MONSSD",IF(ISNUMBER(FIND("OLVH",EZ2)),"NEBDEE",IF(ISNUMBER(FIND("HSCH",EZ2)),"NEUNDE")))))))))))))))))))))))))))))))))))))))))))))
Vielen Dank!!
Wie kann ich mehrere If Bedingungen in VBA abbilden und diese dann durch einen Button in Excel ausführen?
Ich habe eine IF Bedingungen in Excel erstellt, aber ich verliere die Übersicht, ich würde es gerne in VBA abbilden.
Könnt ihr mir bitte helfen? Das u.a. ist nur ein Beispiel.
=IF(ISNUMBER(FIND("SCBV",EZ2)),"Montag",IF(ISNUMBER(FIND("TRBV",EZ2)),"Dienstag",IF(ISNUMBER(FIND("TWBV",EZ2)),"Mittwoch",IF(ISNUMBER(FIND("TTBV",EZ2)),"Donnerstag",IF(ISNUMBER(FIND("TVBV",EZ2)),"MORGEN",IF(ISNUMBER(FIND("VZBV",EZ2)),"FRÜH",IF(ISNUMBER(FIND("VZBT",EZ2)),"NACHMITTAG",IF(ISNUMBER(FIND("PUBV",EZ2)),"MITTAG",IF(ISNUMBER(FIND("VYBV",EZ2)),"NEU",IF(ISNUMBER(FIND("VZAV",EZ2)),"HAUS",IF(ISNUMBER(FIND("RCBV",EZ2)),"NACHT",IF(ISNUMBER(FIND("RCBW",EZ2)),"NACHTT",IF(ISNUMBER(FIND("QRBV",EZ2)),"MALE",IF(ISNUMBER(FIND("QRBW",EZ2)),"HUBERT",IF(ISNUMBER(FIND("QTBV",EZ2)),"THOMAS",IF(ISNUMBER(FIND("QVBW",EZ2)),"THOMASa",IF(ISNUMBER(FIND("QVBV",EZ2)),"THOMASaa",IF(ISNUMBER(FIND("ZYVJ",EZ2)),"TD4",IF(ISNUMBER(FIND("HQVH",EZ2)),"THOMASb",IF(ISNUMBER(FIND("HQCH",EZ2)),"neuue",IF(ISNUMBER(FIND("ZYTV",EZ2)),"Bernd",IF(ISNUMBER(FIND("ZZTV",EZ2)),"Melanie",IF(ISNUMBER(FIND("IUTV",EZ2)),"Melanie",IF(ISNUMBER(FIND("HSCH",EZ2)),"Gregor",IF(ISNUMBER(FIND("HSVH",EZ2)),"MAX",IF(ISNUMBER(FIND("JCMJ",EZ2)),"Schuster",IF(ISNUMBER(FIND("JCDJ",EZ2)),"Mario",IF(ISNUMBER(FIND("JCCJ",EZ2)),"Nexu",IF(ISNUMBER(FIND("JCZJ",EZ2)),"Conny",IF(ISNUMBER(FIND("JCXJ",EZ2)),"Boris",IF(ISNUMBER(FIND("JCPJ",EZ2)),"Rain",IF(ISNUMBER(FIND("JCHJ",EZ2)),"Meld",IF(ISNUMBER(FIND("JCWJ",EZ2)),"NIX",IF(ISNUMBER(FIND("ZYAJ",EZ2)),"NEUOYY",IF(ISNUMBER(FIND("PUBT",EZ2)),"SIsss4",IF(ISNUMBER(FIND("JCYJ",EZ2)),"MEIEE",IF(ISNUMBER(FIND("VYBT",EZ2)),"SF4",IF(ISNUMBER(FIND("VZAT",EZ2)),"NEUTOO",IF(ISNUMBER(FIND("SQVH",EZ2)),"NEUEEEE",IF(ISNUMBER(FIND("IUVJ",EZ2)),"MONDEE",IF(ISNUMBER(FIND("TSVH",EZ2)),"NISCCH",IF(ISNUMBER(FIND("JCEJ",EZ2)),"NEUEUEEE",IF(ISNUMBER(FIND("JCBJ",EZ2)),"MONSSD",IF(ISNUMBER(FIND("OLVH",EZ2)),"NEBDEE",IF(ISNUMBER(FIND("HSCH",EZ2)),"NEUNDE")))))))))))))))))))))))))))))))))))))))))))))
Vielen Dank!!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 259593
Url: https://administrator.de/contentid/259593
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo
Warum löst du das nicht mit SVerweis??
In einer Tabelle könntest du die Variabeln definieren, und zB eine Spalte weiter die Namen dazu.
Beispiel
Und dann kannst du per SVerweis die Daten aus dieser Tabelle in eine andere Tabelle übertragen
http://www.excellernen.de/excel-sverweis/
siehe http://www.file-upload.net/download-10134725/Mappe1.xlsx.html
In Tabelle 1 A1 kannst du deine 4 Buchstaben eingeben
In Tabelle 2 stehen die Referenzen dazu (nicht vollständig)
Gruss Urs
Warum löst du das nicht mit SVerweis??
In einer Tabelle könntest du die Variabeln definieren, und zB eine Spalte weiter die Namen dazu.
Beispiel
A | B |
SCBV | Montag |
TRBV | Dienstag |
TWBV | Mittwoch |
TTBV | Donnerstag |
Und dann kannst du per SVerweis die Daten aus dieser Tabelle in eine andere Tabelle übertragen
http://www.excellernen.de/excel-sverweis/
siehe http://www.file-upload.net/download-10134725/Mappe1.xlsx.html
In Tabelle 1 A1 kannst du deine 4 Buchstaben eingeben
In Tabelle 2 stehen die Referenzen dazu (nicht vollständig)
Gruss Urs
Hallo user2k14,
auch wenn ich hier eine Matrix-Formel vorziehen würde (siehe Biber), hier trotzdem der Vollständigkeit halber noch eine Demo mit einer Worksheet-VBA-Funktion:
demo_multipleif_test_259593.xlsm
Grüße Uwe
auch wenn ich hier eine Matrix-Formel vorziehen würde (siehe Biber), hier trotzdem der Vollständigkeit halber noch eine Demo mit einer Worksheet-VBA-Funktion:
demo_multipleif_test_259593.xlsm
Function findValue(rngSearch As Range)
Dim dic As Object, keys As Variant, f As Range
Set dic = CreateObject("Scripting.Dictionary")
'Werte und deren Entsprechung hinzufügen
dic.Add "SCBV", "Montag"
dic.Add "TRBV", "Dienstag"
'usw. .....
keys = dic.keys
For i = 0 To dic.Count - 1
'Suche Key in der Suchzelle
Set f = rngSearch.Find(keys(i), LookIn:=xlValues, LookAt:=xlPart)
'Wenn Wert gefunden wurde geben den entsprechenden Wert aus dem Dictionary zurück
If Not f Is Nothing Then
findValue = dic.Item(keys(i))
End If
Next
Set dic = Nothing
End Function
Moin user2k14,
Kollege Meierjo hat durchaus Recht mit seinem Lösungsansatz - es reicht eine reine Formellösung mit Index()/Vergleich oder alternativ SVerweis().
Beispiel:
Angenommen du würdest auf einem neuen Blatt - nennen wir es mal "Sheet2" in den zwei Spalten A und B deine Mappingwerte eintragen wie oben vorgeturnt.
Und ebenfalls angenommen, in der ersten Zeile stehen die Überschriften "Key" und "Value" oder wie immer sie bei dir heissen.
Und drittens angenommen, du hättest 65 Mäppingwerte, also der gefüllte Datenbereich ginge von Sheet2!$A$2:$B$66.
Dann kannst du in das Feld, in dem heute dein Bandwurm-IF-Gestrunkele steht schreiben (in EZ2 steht wie in deinem Ansatz der Suchstring)
Dat Janze mit Ctrl-Shift-Enter abschliessen, weil wegen is' sich Matrixformel.
Falls dein Excel ein Outlandishes ist, dann lautet die Formel sinngemäß
..und wird mit Ctrl-Shift-Enter abgeschlossen, weil is' auch dann Matrixformel.
Kannst auch dem Bereich Sheet2!$A$2:$A$A66 den Namen "Keys" und dem Bereich Sheet2!$B$2:$B$66 den Namen "Values" geben und schreiben:
Aber trotzdem mit Ctrl-Shift-Enter... ach, den Rest ahnst du schon.
Grüße
Biber
[Edit] @colinardo:
Warum denn mit Kanonen auf Spätzle werfen??
[/Edit]
Kollege Meierjo hat durchaus Recht mit seinem Lösungsansatz - es reicht eine reine Formellösung mit Index()/Vergleich oder alternativ SVerweis().
Beispiel:
Angenommen du würdest auf einem neuen Blatt - nennen wir es mal "Sheet2" in den zwei Spalten A und B deine Mappingwerte eintragen wie oben vorgeturnt.
Und ebenfalls angenommen, in der ersten Zeile stehen die Überschriften "Key" und "Value" oder wie immer sie bei dir heissen.
Und drittens angenommen, du hättest 65 Mäppingwerte, also der gefüllte Datenbereich ginge von Sheet2!$A$2:$B$66.
Dann kannst du in das Feld, in dem heute dein Bandwurm-IF-Gestrunkele steht schreiben (in EZ2 steht wie in deinem Ansatz der Suchstring)
=INDEX(Sheet2!$B$2:$B$66;VERGLEICH(1; --ISTZAHL(FINDEN(Sheet2!$A$2:$A$66;EZ2));0);1)
Falls dein Excel ein Outlandishes ist, dann lautet die Formel sinngemäß
=INDEX(Sheet2!$B$2:$B$66;MATCH(1; --ISNUMBER(FIND(Sheet2!$A$2:$A$66;EZ2));0);1)
Kannst auch dem Bereich Sheet2!$A$2:$A$A66 den Namen "Keys" und dem Bereich Sheet2!$B$2:$B$66 den Namen "Values" geben und schreiben:
=INDEX(Values;MATCH(1; --ISNUMBER(FIND(Keys;EZ2));0);1)
Grüße
Biber
[Edit] @colinardo:
Warum denn mit Kanonen auf Spätzle werfen??
[/Edit]
Naja wenn er es unbedingt in VBA haben will ich hab's aufgegeben die User mit Formeln zu bewerfen die sie nicht verstehen ...Und die Frage bezog sich ja auf VBA (siehe Titel)
Moin colinardo,
wo hat er denn was davon geschrieben, dass er es verstehen will?
Er "verliert die Übersicht", was ich ja nachvollziehen kann. Von "Verstehen-wollen" lese ich nix.
Okay, dass es VBA sein soll, das hat er geschrieben... weil die Formel zu lang wird für eine Excel-Zelle *gg.
Aber anyhow -deine Variante ist doch nicht praxiskompatibel... jedes Mal, wenn ein ver###ter Mappingwert dazu kommt oder sich ändert, dann müssen Zeilen in einem VBA-Quellcode angepasst werden ???? *lach*
Erklär das mal in einer Durchschnitts-Kneipe auf einem Durchschnittsplaneten dieser Galaxie irgendwelchen zufällig anwesenden Lebensformen.
Überraschtes Glucksen und hochgezogene Augenbrauen (oder entsprechende Körperteile) werden die Antwort sein.
Nee, immer wortwörtlich nur auf genau die gestellte Frage einzugehen ist nicht immer zielführend. Auch wenn der Usr sich dann bedankt und es als "Gelöst" markiert.
Grüße
Biber
wo hat er denn was davon geschrieben, dass er es verstehen will?
Er "verliert die Übersicht", was ich ja nachvollziehen kann. Von "Verstehen-wollen" lese ich nix.
Okay, dass es VBA sein soll, das hat er geschrieben... weil die Formel zu lang wird für eine Excel-Zelle *gg.
Aber anyhow -deine Variante ist doch nicht praxiskompatibel... jedes Mal, wenn ein ver###ter Mappingwert dazu kommt oder sich ändert, dann müssen Zeilen in einem VBA-Quellcode angepasst werden ???? *lach*
Erklär das mal in einer Durchschnitts-Kneipe auf einem Durchschnittsplaneten dieser Galaxie irgendwelchen zufällig anwesenden Lebensformen.
Überraschtes Glucksen und hochgezogene Augenbrauen (oder entsprechende Körperteile) werden die Antwort sein.
Nee, immer wortwörtlich nur auf genau die gestellte Frage einzugehen ist nicht immer zielführend. Auch wenn der Usr sich dann bedankt und es als "Gelöst" markiert.
Grüße
Biber
Ist ja egal so hat nun jeder was vom Thread die VBA- und die Formelfraktion
Grüße Uwe
Nee, immer wortwörtlich nur auf genau die gestellte Frage einzugehen ist nicht immer zielführend. Auch wenn der Usr sich dann bedankt und es als "Gelöst" markiert.
Das ist ja auch nicht mein Ziel, aber ich habe es schon zu oft hier erlebt das User einfach nicht davon abzubringen waren. Und wenn ein anderer User hier im Forum nach einer solchen Lösung mit VBA sucht (steht ja im Titel) dann soll er auch was mit VBA finden . Dafür sind wir ja eine Community bei der jeder etwas beisteuert. Der User hat dann die Wahl und kann dann die Lösung wählen, welche zu seinem Projekt passt.Grüße Uwe
Hallo
Und was soll passieren, wenn du mehrere "Uebereinstimmungen hast?? Soll er dann Montag, Dienstag, in die Zelle schreiben, oder nur die Erste Uebereinstimmung, oder nur die Letzte??
Gruss Urs
....ich muss überrprüfen, ob SCBV dort drinnen steht, wenn ja dann soll er mir in einer anderen Zelle
"Montag" hinschreiben
"Montag" hinschreiben
Und was soll passieren, wenn du mehrere "Uebereinstimmungen hast?? Soll er dann Montag, Dienstag, in die Zelle schreiben, oder nur die Erste Uebereinstimmung, oder nur die Letzte??
Gruss Urs