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-dann Funktion mit 3 Bedingungen/ vba
#1
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?


Angehängte Dateien
.xlsm   Testdatei.xlsm (Größe: 15,11 KB / Downloads: 11)
Antworten Top
#2
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
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
Code:
Sub M_snb()
   [I2:I200] = [if(H2:H200="","",if(E2:E200&F2:F200&H2:H200="x","Vorschlag",I2:I200))]
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#4
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?
Antworten Top
#5
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?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#6
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 
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#7
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?


Angehängte Dateien
.xlsm   Testdatei.xlsm (Größe: 20,99 KB / Downloads: 1)
Antworten Top
#8
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 
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#9
Was soll ich sagen?

Großartig  :19:

Vielen Dank und frohes Fest  Xmas12 

:15:
Antworten Top
#10
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?


Angehängte Dateien Thumbnail(s)
                       
   
Antworten Top


Gehe zu:


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