WENN Funktion in Excel
Guten Tag,
Hab von dem Forum nur Gutes gehört und möcht eauch mal mit einem "vermeindlich" kleinen Problem aufwarten:
Es geht um folgendes, ich habe eine relativ Umfangreiche Excel Tabelle in der ich unter anderem Spalten habe in denen Buchstaben von A bis E eingefügt werden können (nicht müssen) Wenn aber die Buchstaben eingefügt werden möchte ich gerne das Zeilen und doer Zellen mit bestimmten Text direkt unter die Zeile mit dem jeweiligen Buchstaben eingefügt werden.
Geht das überhaupt? Wenn ja wie empfielt es sich vorzugehen?mit einem Makro oder mit einer erweiterten WENN Funktion?
Ich danke im vorraus und bin gespannt ob Ihr euren Ruf gerecht werdet.
Mit freundlichen Grüßen Ralph
Antwort schreiben
Antwort 1 von M.O. vom 08.07.2020, 13:21 Options
Hallo Ralph,
das musst du über VBA lösen.
wechsele mit Alt + F11 in die VBA-Umgebung und füge bei dem betreffenden Arbeitsblatt den folgenden Code ein:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim eing As String
'Zeile wird nur eingefügt, wenn eine Eingabe in Spalte D , E oder F erfolgt
If Target.Column > 3 And Target.Column < 7 Then
eing = Cells(Target.Row, Target.Column)
If eing = "A" Or eing = "B" Or eing = "C" Or eing = "D" Or eing = "E" Then
Cells(Target.Row + 1, 1).EntireRow.Insert
Cells(Target.Row + 1, 1) = "Ich wurde hier eingefügt"
End If
End If
End Sub
Den Code musst du entsprechend deinen Bedürfnissen anpassen.
Gruß
M.O.
Antwort 2 von Ralph0F3 vom 08.07.2020, 15:13 Options
Also erstmal rechtherzlichen Dank!
Das Forum hält was es verspricht.
Ich habe jetzt mit deinem Code etwas herum experimentiert und auch alles so hin bekommen wie ich es mir gedacht hab bzw. wie ich es wollte. Vielen Dank nochmal!
Als ich jedoch das Ergebniss sah wurde mir schlagartig bewusst das die größe der Schrift bzw. das Format der Schrift im ganzen (Fettgedruckt, andere Schriftart) nicht zu den Tabellen passt d.h. es müsste kleiner sein und die Überschrift von den eingefügten Zellen Fettgedruckt.
Da das einfügen von Zellen und Text per VBA funktioniert gehe ich davon aus oder hoffe vielmehr das die Formatierung der Schrift ebenfalls über VBA funtioniert, jedoch weiß ich nicht wie!
Vielen Dank nochmal!
Ralph
Antwort 3 von Ralph0F3 vom 08.07.2020, 15:39 Options
Also erstmal rechtherzlichen Dank!
Das Forum hält was es verspricht.
Ich habe jetzt mit deinem Code etwas herum experimentiert und auch alles so hin bekommen wie ich es mir gedacht hab bzw. wie ich es wollte. Vielen Dank nochmal!
Als ich jedoch das Ergebniss sah wurde mir schlagartig bewusst das die größe der Schrift bzw. das Format der Schrift im ganzen (Fettgedruckt, andere Schriftart) nicht zu den Tabellen passt d.h. es müsste kleiner sein und die Überschrift von den eingefügten Zellen Fettgedruckt.
Da das einfügen von Zellen und Text per VBA funktioniert gehe ich davon aus oder hoffe vielmehr das die Formatierung der Schrift ebenfalls über VBA funtioniert, jedoch weiß ich nicht wie!
Vielen Dank nochmal!
Ralph
Antwort 4 von M.O. vom 08.07.2020, 15:53 Options
Hallo Ralph,
hier der ergänzte Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim eing As String
'Zeile wird nur eingefügt, wenn eine Eingabe zwischen Spalte D (4), E oder F (6) erfolgt
If Target.Column > 3 And Target.Column < 7 Then
eing = Cells(Target.Row, Target.Column)
If eing = "A" Or eing = "B" Or eing = "C" Or eing = "D" Or eing = "E" Then
Cells(Target.Row + 1, 1).EntireRow.Insert
Cells(Target.Row + 1, 1) = "Ich wurde hier eingefügt"
'Hier wird der eingefügte Text formatiert
With Cells(Target.Row + 1, 1).Font
.Name = "Book Antiqua"
.Size = 10
.Bold = True
End With
End If
End If
End Sub
Die Ergänzung für die Schrift musst du natürlich entsprechend anpassen.
Noch ein Tipp:
Zum VBA-Lernen ist es auch ganz hilfreich, Makros aufzuzeichnen und dann einfach mal zu experimentieren.
Gruß
M.O.
Antwort 5 von Ralph0F3 vom 08.07.2020, 18:14 Options
Hat super funktioniert Danke nochmal !
Antwort 6 von Ralph0F3 vom 09.07.2020, 11:31 Options
Hallo doch nochmal.
Also im großen und ganzen bin ich wirklich zufrieden nur möchte ich jetzt auch noch in die Zelle die direkt neben der liegt die ich damit eingefügt habe... Sorry M.O. habe es auch nicht mit herumexperimentieren hin bekommen.
Also die Zelle die rechts neben der gerade eingefügten ist.
DAnke nochmal für deine Hilfe...
Antwort 7 von M.O. vom 09.07.2020, 11:43 Options
Hallo Ralph,
wenn du in die Spalte B der neuen Zeile einen Text einfügen willst so ergänze die folgende Zeile:
Cells(Target.Row + 1, 2) = "Ich wurde in Spalte B eingefügt"
Für Spalte C sieht der Code so aus:
Cells(Target.Row + 1, 3) = "Ich wurde in Spalte C eingefügt"
Hoffe du kommst damit klar. Ansonsten melde ich noch mal. Dafür ist das Forum ja da :-).
Gruß
M.O.
Antwort 8 von Ralph0F3 vom 09.07.2020, 11:45 Options
Hallo doch nochmal.
Also im großen und ganzen bin ich wirklich zufrieden nur möchte ich jetzt auch noch in die Zelle die direkt neben der liegt die ich damit eingefügt habe... Sorry M.O. habe es auch nicht mit herumexperimentieren hin bekommen.
Also die Zelle die rechts neben der gerade eingefügten ist.
DAnke nochmal für deine Hilfe...
Antwort 9 von Ralph0F3 vom 10.07.2020, 07:45 Options
Guten Morgen... Perfektion ist ein Fluch...
Ich muss doch noch etwas nachfragen und daher ein bisschen ins Detail gehen...
Also ich habe den obe stehenden Code so bearbeitet das ich in einem Excel Arbeitsblatt
nur in Spalte E jeweils die Buschstaben A, B, C, D, E eintrage und er mir jeweils Zeilen mit Nummern und Text (für A - E unterschiedlich) einfügt.
Dann wollte ich das der eingefügte Text und Nummern (also 2 Spalten und max 30 Zeilen) in einer kleineren bzw anderen Schrift dargestellt bzw. eingefügt wird.
Soweit so gut das funktioniert ja soweit auch doch der TEufel steckt im Detail.
Denn wenn der Text (2 Spalten und max. 30 Zeilen) eingefügt ist kann ich nur unterscheiden ob er ab Zeile null also Zeile wo ich den Buchstaben (A-E) eintrage oder ab Zeile 1 (den ersten eingefügten Text) den TExt verändert.
Ich möchte jedoch das der Buchstabe den ich eintrage normal dargestellt wird und der erste der eingefügt wird in der veränderten Schriftart...
Habe ich da ein denkfehler?
hier nochmal
meinen Code:
With Cells(Target.Row + 1, 6).Font
.Name = "Times New Roman"
.Size = 8
.Bold = False
End With
Danke "wiedermal" im vorraus
Antwort 10 von Ralph0F3 vom 10.07.2020, 07:58 Options
Guten Morgen... Perfektion ist ein Fluch...
Ich muss doch noch etwas nachfragen und daher ein bisschen ins Detail gehen...
Also ich habe den obe stehenden Code so bearbeitet das ich in einem Excel Arbeitsblatt
nur in Spalte E jeweils die Buschstaben A, B, C, D, E eintrage und er mir jeweils Zeilen mit Nummern und Text (für A - E unterschiedlich) einfügt.
Dann wollte ich das der eingefügte Text und Nummern (also 2 Spalten und max 30 Zeilen) in einer kleineren bzw anderen Schrift dargestellt bzw. eingefügt wird.
Soweit so gut das funktioniert ja soweit auch doch der TEufel steckt im Detail.
Denn wenn der Text (2 Spalten und max. 30 Zeilen) eingefügt ist kann ich nur unterscheiden ob er ab Zeile null also Zeile wo ich den Buchstaben (A-E) eintrage oder ab Zeile 1 (den ersten eingefügten Text) den TExt verändert.
Ich möchte jedoch das der Buchstabe den ich eintrage normal dargestellt wird und der erste der eingefügt wird in der veränderten Schriftart...
Habe ich da ein denkfehler?
hier nochmal
meinen Code:
With Cells(Target.Row + 1, 6).Font
.Name = "Times New Roman"
.Size = 8
.Bold = False
End With
Danke "wiedermal" im vorraus
Antwort 11 von Ralph0F3 vom 10.07.2020, 09:00 Options
Guten Morgen... Perfektion ist ein Fluch...
Ich muss doch noch etwas nachfragen und daher ein bisschen ins Detail gehen...
Also ich habe den obe stehenden Code so bearbeitet das ich in einem Excel Arbeitsblatt
nur in Spalte E jeweils die Buschstaben A, B, C, D, E eintrage und er mir jeweils Zeilen mit Nummern und Text (für A - E unterschiedlich) einfügt.
Dann wollte ich das der eingefügte Text und Nummern (also 2 Spalten und max 30 Zeilen) in einer kleineren bzw anderen Schrift dargestellt bzw. eingefügt wird.
Soweit so gut das funktioniert ja soweit auch doch der TEufel steckt im Detail.
Denn wenn der Text (2 Spalten und max. 30 Zeilen) eingefügt ist kann ich nur unterscheiden ob er ab Zeile null also Zeile wo ich den Buchstaben (A-E) eintrage oder ab Zeile 1 (den ersten eingefügten Text) den TExt verändert.
Ich möchte jedoch das der Buchstabe den ich eintrage normal dargestellt wird und der erste der eingefügt wird in der veränderten Schriftart...
Habe ich da ein denkfehler?
hier nochmal
meinen Code:
With Cells(Target.Row + 1, 6).Font
.Name = "Times New Roman"
.Size = 8
.Bold = False
End With
Danke "wiedermal" im vorraus
Antwort 12 von Ralph0F3 vom 10.07.2020, 09:40 Options
Guten Morgen... Perfektion ist ein Fluch...
Ich muss doch noch etwas nachfragen und daher ein bisschen ins Detail gehen...
Also ich habe den obe stehenden Code so bearbeitet das ich in einem Excel Arbeitsblatt
nur in Spalte E jeweils die Buschstaben A, B, C, D, E eintrage und er mir jeweils Zeilen mit Nummern und Text (für A - E unterschiedlich) einfügt.
Dann wollte ich das der eingefügte Text und Nummern (also 2 Spalten und max 30 Zeilen) in einer kleineren bzw anderen Schrift dargestellt bzw. eingefügt wird.
Soweit so gut das funktioniert ja soweit auch doch der TEufel steckt im Detail.
Denn wenn der Text (2 Spalten und max. 30 Zeilen) eingefügt ist kann ich nur unterscheiden ob er ab Zeile null also Zeile wo ich den Buchstaben (A-E) eintrage oder ab Zeile 1 (den ersten eingefügten Text) den TExt verändert.
Ich möchte jedoch das der Buchstabe den ich eintrage normal dargestellt wird und der erste der eingefügt wird in der veränderten Schriftart...
Habe ich da ein denkfehler?
hier nochmal
meinen Code:
With Cells(Target.Row + 1, 6).Font
.Name = "Times New Roman"
.Size = 8
.Bold = False
End With
Danke "wiedermal" im vorraus
Antwort 13 von M.O. vom 10.07.2020, 10:14 Options
Hallo Ralph,
dein Code funktioniert, allerdings für Spalte F.
Für Spalte E sieht er so aus:
With Cells(Target.Row + 1, 5).Font
.Name = "Times New Roman"
.Size = 8
End With
Gruß
M.O.
Antwort 14 von Ralph0F3 vom 10.07.2020, 10:23 Options
Guten Morgen... Perfektion ist ein Fluch...
Ich muss doch noch etwas nachfragen und daher ein bisschen ins Detail gehen...
Also ich habe den obe stehenden Code so bearbeitet das ich in einem Excel Arbeitsblatt
nur in Spalte E jeweils die Buschstaben A, B, C, D, E eintrage und er mir jeweils Zeilen mit Nummern und Text (für A - E unterschiedlich) einfügt.
Dann wollte ich das der eingefügte Text und Nummern (also 2 Spalten und max 30 Zeilen) in einer kleineren bzw anderen Schrift dargestellt bzw. eingefügt wird.
Soweit so gut das funktioniert ja soweit auch doch der TEufel steckt im Detail.
Denn wenn der Text (2 Spalten und max. 30 Zeilen) eingefügt ist kann ich nur unterscheiden ob er ab Zeile null also Zeile wo ich den Buchstaben (A-E) eintrage oder ab Zeile 1 (den ersten eingefügten Text) den TExt verändert.
Ich möchte jedoch das der Buchstabe den ich eintrage normal dargestellt wird und der erste der eingefügt wird in der veränderten Schriftart...
Habe ich da ein denkfehler?
hier nochmal
meinen Code:
With Cells(Target.Row + 1, 6).Font
.Name = "Times New Roman"
.Size = 8
.Bold = False
End With
Danke "wiedermal" im vorraus
Antwort 15 von Ralph0F3 vom 10.07.2020, 10:30 Options
Danke das hatte ich schon ausprobiert wie steht es aber wenn ich Spalte E und F so Umformatieren will und nicht wie gesagt die Zeile wo ich die Buchstaben eintrage denn die Formatiert er gleich mit um und wenn ich ihn auf 1 setze formatiert er erst ab Zeile 1 damit hab ich praktich den ersten Eintrag der hinzugefügt wird unformatiert...
Antwort 16 von M.O. vom 10.07.2020, 11:27 Options
Hallo Ralph,
ich weiß nicht, ob ich dich richtig verstanden habe.
Dieser Code formatiert die Spalten E und F in der neu eingefügten Zeile:
With Range(Cells(Target.Row + 1, 5), Cells(Target.Row + 1, 6)).Font
.Name = "Times New Roman"
.Size = 8
End With
Wenn du die gesamte Spalte E und F formatieren willst, dann geht das so:
With Columns("E:F").Font
.Name = "Times New Roman"
.Size = 8
End With
Gruß
M.O.
Antwort 17 von Ralph0F3 vom 10.07.2020, 12:05 Options
Danke das hatte ich schon ausprobiert wie steht es aber wenn ich Spalte E und F so Umformatieren will und nicht wie gesagt die Zeile wo ich die Buchstaben eintrage denn die Formatiert er gleich mit um und wenn ich ihn auf 1 setze formatiert er erst ab Zeile 1 damit hab ich praktich den ersten Eintrag der hinzugefügt wird unformatiert...
Antwort 18 von Ralph0F3 vom 10.07.2020, 13:10 Options
Also das Ergebniss
With Range(Cells(Target.Row + 1, 5), Cells(Target.Row + 1, 6)).Font
.Name = "Times New Roman"
.Size = 8
End With
ist schon das richtige nur musst du sehen das eine Tabelle bereits vorformatiert existiert und ich in einer anderen Schristart (siehe oben) Zeilen und Text hinzufügen will wenn ich jetzt aber den oben stehenden Code anwende und die 0 eintrage formatiert er mir bei die Zeile wo ich A-E eintrage auch mit und wenn ich 1 eintrage lässt er die 1 Zeile der neu eingefügten Zeilen unformatiert...
Antwort 19 von Ralph0F3 vom 10.07.2020, 15:33 Options
Also das Ergebniss
With Range(Cells(Target.Row + 1, 5), Cells(Target.Row + 1, 6)).Font
.Name = "Times New Roman"
.Size = 8
End With
ist schon das richtige nur musst du sehen das eine Tabelle bereits vorformatiert existiert und ich in einer anderen Schristart (siehe oben) Zeilen und Text hinzufügen will wenn ich jetzt aber den oben stehenden Code anwende und die 0 eintrage formatiert er mir bei die Zeile wo ich A-E eintrage auch mit und wenn ich 1 eintrage lässt er die 1 Zeile der neu eingefügten Zeilen unformatiert...
Antwort 20 von M.O. vom 10.07.2020, 16:23 Options
Hallo Ralph,
vielleicht liegt's ja am warmen Wetter, aber ich verstehe nicht wirklich was du willst.
Wird generell bei einer Eingabe eine Zeile eingefügt oder nur wenn du die Buchstaben A-E eingibst? Bei meinem Ursprungscode kannst du eine Null eintragen, dann passiert gar nichts. Wenn du etwas in eine neu angelegte Zeile einträgst, erhhält die Eingabe natürlich die per VBA vorgenommene Formatierung
Also beschreibe dein Problem doch mal so, dass es auch jemand versteht, der deine Tabelle nicht vor Augen hat und poste auch mal deinen vollständigen Code.
Gruß
M.O.