user2k14
Goto Top

IF Bedingungen in EXCEL (VBA) erstellen

Hallo Leute,

ich möchte gerne in einer Spalte alle Zellen überprüfen, ob ein bestimmter Text dort enthalten ist, wenn ja dann soll er mir in der Spalte daneben das Wort hinschreiben, aber nur die ersten 6 Buchstaben

ich schaffe nur eine IF Bedingung, aber ich möchte sie gerne verschachteln...es sollten 5 if Bedingungen am Ende dann dastehen

hier meine IF Bedingung => =IF(ISNUMBER(SEARCH("Mount Everest",CB3)),LEFT(CB3,6)), es funktioniert, aber wie kann ich mehrere IF Bedingungen dort einbauen, geht wahrscheinlich mit VBA oder? wie würde das dann aussehen?

thanks

Content-ID: 233475

Url: https://administrator.de/forum/if-bedingungen-in-excel-vba-erstellen-233475.html

Ausgedruckt am: 29.12.2024 um 13:12 Uhr

Pjordorf
Pjordorf 24.03.2014 um 13:15:04 Uhr
Goto Top
Hallo,

Zitat von @user2k14:
aber wie kann ich mehrere IF Bedingungen dort einbauen, geht wahrscheinlich mit VBA oder? wie würde das dann aussehen?
In VBA mit einer oder mehrerer If...Then...Else-Anweisung(en) oder in dein (deutsches?) Excel in einer Zelle mit =Wenn(Prüfung;[Dann_Wert;[Sonst_Wert]) und du dir eben in einen Dann oder Sonst Feld dir weitere Wenn(Prüfung; [Dann];[Sonst]) aufbaust. Das verschachteln von wenn ... dann bedingungen hat aber seine Grenzen.

F1 in Excel hilft dir dabei.

Gruß,
Peter
user2k14
user2k14 24.03.2014 um 13:23:37 Uhr
Goto Top
Hi Peter,

ich habe schon in F1 Hilfe nachgesehen, aber werde dort nicht schlauer...

so würde ich es gerne aufbauen, aber weiß nicht wie ich es in VBA reinschreiben kann

wenn zelle 1 die Buchstaben "HEUTE", dann kürze diese Zelle um 3 Buchstabe von links weg,

wenn aber zelle 1 die Buchstaben "Morgen" enthält, dann kürze diese Zelle um 2 Buchstabe von links weg,

wenn aber zelle 1 die Buchstaben "Übermorgen" enthält, dann kürze diese Zelle um 6 Buchstabe von links weg,

wenn aber zelle 1 die Buchstaben "Jahr" enthält, dann kürze diese Zelle um 4 Buchstabe von links weg,

sonst lasse die Zelle 1 wie sie ist

danke

Lg

Dani
it-frosch
it-frosch 24.03.2014 aktualisiert um 13:43:19 Uhr
Goto Top
Hallo Dani,

du solltest dazu die CASE Select Funktion nehmen.
Wie du sieh verwendest, ist hier: http://www.office-loesung.de/ftopic177172_0_0_asc.php schön beschrieben.


ich möchte gerne in einer Spalte alle Zellen überprüfen, ob ein bestimmter Text dort enthalten ist, wenn ja dann soll er mir in der Spalte daneben das Wort
hinschreiben, aber nur die ersten 6 Buchstaben
Eigentlich brauchst du dazu kein VBA.
Einfach Tabelle nach der Spalte sortieren, die auf den bestimmten Text geprüft werden soll.
Anschließend hast du alle Zeilen mit deinen Suchkriterien untereinander und brauchst nur noch über Excel Funktion RECHTS das rausschneiden was du haben willst.

Sollte eine Sache von max. 10 min sein.

grüße vom it-frosch
Snowman25
Lösung Snowman25 24.03.2014, aktualisiert am 25.03.2014 um 10:16:55 Uhr
Goto Top
Hallo Dani,

Hier ist eine Formel, die deinen Ansprüchen gerecht werden könnte:
=WENN(A1="HEUTE";TEIL(B1;4;LÄNGE(B1)-3);WENN(A1="Morgen";TEIL(B1;3;LÄNGE(B1)-2);WENN(A1="Übermorgen";TEIL(B1;7;LÄNGE(B1)-6);WENN(A1="JAHR";TEIL(B1;5;LÄNGE(B1)-4);B1))))  

Gruß,
@Snowman25

€dit:
Jetzt auch mit RECHTS() anstelle von TEIL()
=WENN(A1="HEUTE";RECHTS(B1;LÄNGE(B1)-3);WENN(A1="Morgen";RECHTS(B1;LÄNGE(B1)-2);WENN(A1="Übermorgen";RECHTS(B1;LÄNGE(B1)-6);WENN(A1="JAHR";RECHTS(B1;LÄNGE(B1)-4);B1))))  
colinardo
Lösung colinardo 24.03.2014, aktualisiert am 25.03.2014 um 10:16:02 Uhr
Goto Top
Hi user2k14,
und wenn's VBA sein soll:
Für das Beispiel werden hier die Zellen "A1:A100" auf dem ersten Worksheet überprüft, und dann die Werte in die Zelle daneben geschrieben.
Sub stripChars()
    Set ws = Worksheets(1)
    For Each cell In ws.Range("A1:A100")  
        Set nachbarzelle = cell.Offset(0, 1)
        If InStr(1, cell.Value, "Heute", 1) Then  
            nachbarzelle.Value = Mid(cell.Value, 4)
        ElseIf InStr(1, cell.Value, "Übermorgen", 1) Then  
            nachbarzelle.Value = Mid(cell.Value, 7)
        ElseIf InStr(1, cell.Value, "Morgen", 1) Then  
            nachbarzelle.Value = Mid(cell.Value, 3)
        ElseIf InStr(1, cell.Value, "Jahr", 1) Then  
            nachbarzelle.Value = Mid(cell.Value, 5)
        Else
            nachbarzelle.Value = cell.Value
        End If
    Next
End Sub
Grüße Uwe

-edit- Reihenfolge korrigiert. Merci @Biber, da hat das Fieber von heute doch Konsequenzen gehabt face-wink
Biber
Biber 24.03.2014 aktualisiert um 17:47:06 Uhr
Goto Top
[OT]
Moin Snowman25 und colinardo,

ich nehme es seit Jahrzehnten schon stillschweigend hin, dass andere Mitmenschen mit Montagen weniger Probleme haben als ich.
Und das den meisten montags nicht ganz so viele Denkfehler passieren wie mir.

Aber wie ihr beide mit eurer Prüf-Reihenfolge jemals den String "Übermorgen" finden könnt - das ist nicht spielerische Leichtigkeit, das ist Zauberei.

Ich würde besser die Reihenfolge der WENNs bzw IFs abändern und zuerst auf "übermorgen" und erst danach auf "morgen" prüfen.

...weil wegen.... kleiner Tipp ... dieses proof-of-concept hier ,liefert die Anzahl der im Text "ein Test für übermorgen" gefundenen 4 Worte in der Array-Klammer.

Bitte als Matrixformel eingeben mit Ctrl-Shift-Enter
=SUMME(--ISTZAHL(SUCHEN({"heute"."morgen"."übermorgen"."Jahr"};"ein Test für übermorgen")))  

-> Ergebnis 2 Treffer in dem String.

Da die WENN/IF-Strukturen aber nur einen Treffer anzeigen, nämlich den zuerst geprüften.....

Grüße
Biber
[/OT]
Snowman25
Snowman25 24.03.2014 um 18:33:44 Uhr
Goto Top
Hey @Biber,

naja, wenn man den kompletten Zelleninhalt vergleicht, ist das MATCH einzigartig und die Reihenfolge damit vernachlässigbar.
Ausserdem haben wir strikt nach Vorgabe gearbeitet. Die Aufgabenstellung war bloß falsch face-smile.

Gruß,
@Snowman25
Biber
Biber 24.03.2014 aktualisiert um 19:05:14 Uhr
Goto Top
Moin Snowman25,

ja nee... wenn du den kompletten Zellenunhalt vergleichst, dann machst du das in deinem Beispiel in Spalte A und bildest einen Teilstring der Nachbarzelle in Spalte B.

Ich habe aber den TO so verstanden, dass er, falls ein bestimmter Text in Spalte A, Zeile x vorhanden ist, einen Teilstring dieser Zelle Ax in eine andere Zelle schreiben will.


Sollte deine Interpretation mit dem Komplett-Match stimmen, dann können wir auch mit Index()/Vergleich arbeiten. face-wink

Grüße
Biber
user2k14
user2k14 25.03.2014 um 10:15:47 Uhr
Goto Top
hey Leute, danke für euren Einsatz, habs nun dank eurer Hilfe geschafft !face-smile

die letzten Nachrichten waren für mich dann aber nicht mehr zum Verstehen:P,trotzdem thanks!face-smile