Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

EXCEL IF Bedingung in VBA erstellen

Frage Microsoft Microsoft Office

Mitglied: user2k14

user2k14 (Level 1) - Jetzt verbinden

12.01.2015 um 13:28 Uhr, 1302 Aufrufe, 8 Kommentare

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!!
Mitglied: Meierjo
12.01.2015, aktualisiert um 15:47 Uhr
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
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
Bitte warten ..
Mitglied: user2k14
12.01.2015 um 15:53 Uhr
Hi danke für die Antwort, aber das hilft mir leider nicht...da das Wort z.Bsp. SCBV in einer Zelle steht mit anderen Wörtern....ich muss überrprüfen, ob SCBV dort drinnen steht, wenn ja dann soll er mir in einer anderen Zelle "Montag" hinschreiben...das funktioniert bisher mit der langen formel, aber das ist auch begrenzt...mit VBA gebe es da keine Grenze....

Lg

Dani
Bitte warten ..
Mitglied: colinardo
12.01.2015, aktualisiert um 17:19 Uhr
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

01.
Function findValue(rngSearch As Range) 
02.
    Dim dic As Object, keys As Variant, f As Range 
03.
    Set dic = CreateObject("Scripting.Dictionary") 
04.
    'Werte und deren Entsprechung hinzufügen 
05.
    dic.Add "SCBV", "Montag" 
06.
    dic.Add "TRBV", "Dienstag" 
07.
    'usw. ..... 
08.
 
09.
    keys = dic.keys 
10.
    For i = 0 To dic.Count - 1 
11.
        'Suche Key in der Suchzelle 
12.
        Set f = rngSearch.Find(keys(i), LookIn:=xlValues, LookAt:=xlPart) 
13.
        'Wenn Wert gefunden wurde geben den entsprechenden Wert aus dem Dictionary zurück 
14.
        If Not f Is Nothing Then 
15.
            findValue = dic.Item(keys(i)) 
16.
        End If 
17.
    Next 
18.
    Set dic = Nothing 
19.
End Function
Grüße Uwe
Bitte warten ..
Mitglied: Biber
12.01.2015, aktualisiert um 16:42 Uhr
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)
=INDEX(Sheet2!$B$2:$B$66;VERGLEICH(1; --ISTZAHL(FINDEN(Sheet2!$A$2:$A$66;EZ2));0);1)
Dat Janze mit Ctrl-Shift-Enter abschliessen, weil wegen is' sich Matrixformel.

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)
..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:
=INDEX(Values;MATCH(1; --ISNUMBER(FIND(Keys;EZ2));0);1)
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]
Bitte warten ..
Mitglied: colinardo
12.01.2015, aktualisiert um 16:49 Uhr
Zitat von 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)
Bitte warten ..
Mitglied: Biber
12.01.2015, aktualisiert um 16:59 Uhr
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
Bitte warten ..
Mitglied: colinardo
12.01.2015, aktualisiert um 17:25 Uhr
Ist ja egal so hat nun jeder was vom Thread die VBA- und die Formelfraktion

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
Bitte warten ..
Mitglied: Meierjo
12.01.2015 um 17:01 Uhr
Hallo

....ich muss überrprüfen, ob SCBV dort drinnen steht, wenn ja dann soll er mir in einer anderen Zelle
"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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
gelöst Mehrere Charts per VBA erstellen lassen, Titel wird nicht angezeigt

Frage von Aximand zum Thema VB for Applications ...

VB for Applications
Excel VBA Sortierung von Daten (5)

Frage von easy4breezy zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...