Clever-Excel-Forum

Normale Version: Wenn-dann Funktion mit 3 Bedingungen/ vba
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin zusammen,

ich bekomme wöchentlich eine Tabelle mit gleicher Breite und unterschiedlicher Länge. 

Wenn Zelle E & F leer sind & in Zelle H ein "x" steht soll in Zelle I immer der Wert "Vorschlag" eingetragen werden.

Wie lässt sich das realisieren?
Hallo,

versuche es mal mit diesem Makro im Modul des Tabellenblattes:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Column = 8 Then
       If Cells(Target.Row, 5) = "" And Cells(Target.Row, 6) = "" And Cells(Target.Row, 8) = "x" Then
           With Cells(Target.Row, 9)
               .Value = "Vorschlag"
               .Font.Color = -16776961
               .Font.TintAndShade = 0
           End With
       End If
   End If
End Sub
Code:
Sub M_snb()
   [I2:I200] = [if(H2:H200="","",if(E2:E200&F2:F200&H2:H200="x","Vorschlag",I2:I200))]
End Sub
Moin zusammen :)


@Klaus-Dieter: Dein Code funktioniert, allerdings hat er den Nachteil, dass ich die "x" selbst setzen muss um den Eintrag "Vorschlag" zu erhalten. 
Lässt sich der Code so ändern, dass die Funktion ausgeführt wird wenn ich Daten via "Inhalte einfügen" in mein Template kopiere?

Darüber hinaus habe ich bereits eine Funktion Worksheet_Change(ByVal Target As Range) in dem Arbeitsblatt. Gibt es eine Möglichkeit 2 dieser Funktionen in einem Arbeitsblatt zu nutzen, ohne eine Fehlermeldung zu bekommen?


@snb: Dein Code funktioniert ebenfalls super und umgeht in meinem Fall das Problem der nicht eindeutigen Funktionsbenennung. Aber leider löscht er alle anderen Inhalte in Spalte "I" beim Ausführen.

Gibt es eine Möglichkeit nur die Inhalte in de n Zeilen zu ändern die diese Wenn-dann Bedingungen erfüllen?
Hallo,

jeder Lösungsvorschlag kann nur so gut sein, wie die Fragestellung. Von dem anderen Makro habe ich in der Beispieldatei nichts gesehen. Man kann die aber in aller Regel zu einem Makro zusammenführen.
Wo kommen die Inhalte denn her?
Hättest du einfach selbt ändern können....

PHP-Code:
Sub M_snb()
  [tabelle1[KLKLKL]] = [if(tabelle1[Life]&tabelle1[Still]&tabelle1[XX]="x","Vorschlag",if(tabelle1[KLKLKL]="","",tabelle1[KLKLKL]))]
End Sub 
Moin,

im Tabellenblatt steht bereits der folgende Code im Modul:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("J:J")) Is Nothing Then
 On Error GoTo ErrorHandler
 Application.EnableEvents = False
 Target.Value = UCase(Target)
ErrorHandler:
 Application.EnableEvents = True
End If
End Sub

In der entsprechenden Spalte dürfen nur Großbuchstaben benutzt werden sonst können die Werte nicht korrekt in unsere Datenbank übertragen werden.

Die Inhalte bekomme ich wöchentlich in einer sehr große Excel Liste angeliefert. Nach der Aufbereitung in einem anderen Template kopiere ich die Daten über Inhalte einfügen in das Sheet an dem ich bzw. wir hier gerade arbeiten.

Der Code von @snb funktioniert super!

Gibt es die Möglichkeit nicht nur den Wert "Vorschlag" bei Erfüllung der Wenn-dann-Bedingung in Spalte [KLKLKL] schreiben zu lassen, sondern die Werte aus Zelle 1 & 2 in der Zeile auch zu übernehmen?
PHP-Code:
Sub M_snb()
  [tabelle1[KLKLKL]] = [if(tabelle1[Life]&tabelle1[Still]&tabelle1[XX]="x",tabelle1[Artikelnummer]&" "&tabelle1[Artikelbezeichnung]&" Vorschlag",if(tabelle1[KLKLKL]="","",tabelle1[KLKLKL]))]
End Sub 
Was soll ich sagen?

Großartig  :19:

Vielen Dank und frohes Fest  Xmas12 

:15:
Moin,

bei der Nutzung des Codes sind doch noch ein paar Fragen/ Fehler aufgetaucht. Ich habe ihn natürlich auf meine Tabelle im Template angepasst und in der Regel funktioniert er fehlerfrei, aber leider nicht immer.

Zunächst für mich zum Verständnis:

if(tabelle1[Life]&tabelle1[Still]&tabelle1[XX]="x"

heisst für mich, dass die Bedingung erfüllt ist wenn in jeder Spalte ein "x" steht. Das ist offenbar nicht der Fall. Ich kenne es bisher nur so, dass leer Zellen als "" bezeichnet werden. Ich hätte also den folgenden Code erwartet:

if(tabelle1[Life]=""&tabelle1[Still]=""&tabelle1[XX]="x"

Warum ist das hier nicht nötig bzw. funktioniert gar nicht?

In einigen Fällen führt der aktuelle Code zu dem im Screenshot dargestellten Verhalten (Bild 1-6 Fehler; 7 korrektes Verhalten). Es taucht also in der Zielzelle der Wert "#WERT!" auf. Ich habe dafür noch kein Muster erkennen können. Was könnte die Ursache dafür sein?