Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Neue Zeile einfügen, wenn Bedingung erfüllt

Neue Zeile einfügen, wenn Bedingung erfüllt
31.01.2018 19:25:00
TomGie
Hallo liebes Forum,
ich habe ein kleines Problem und komme leider nicht weiter.
Ich habe eine Tabelle vor mir, welche in Spalte8=H TEILWEISE negative Werte enthält (zb: -2,04 ) oder leer Zellen.
- Nun soll immer, wenn ein negativer Wert in Spalte8=H vorhanden ist, eine neue Zeile darunter erzeugt werden.
- Dann soll die originale Zeile von drüber kopiert werden und in der neuen Zeile eingefügt werden.
- Und zum Schluss müsste noch in der neuen Zeile der negative Wert aus Spalte8=H ausgeschnitten werden und in Spalte6=F eingefügt werden
Bisher sieht meine Lsg so aus, aber es tut sich nichts. Wie würdet ihr es lösen?
Dim letzteZeile
letzteZeile = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
For i = letzteZeile To 1 Step -1
If Cells(i, 8).Value = "-" Then
Cells(i + 1, 8).EntireRow.Insert
Rows("i:i").EntireRow.Copy
Rows("i-1:i-1").Select
ActiveSheet.Paste
Cells(i - 1, 8).Cut
Cells(i - 1, 6).Select
ActiveSheet.Paste
End If
Next
Beste Grüße und vielen lieben Dank im Voraus für die Hilfe :)
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Neue Zeile einfügen, wenn Bedingung erfüllt
31.01.2018 19:35:01
onur
Negativer wert:
If Cells(i, 8).Value  Then

sonst suchst du nur nach einem text, der "-" lautet.
AW: Neue Zeile einfügen, wenn Bedingung erfüllt
31.01.2018 19:59:17
TomGie
HAllo Onur,
danke für den Hinweis, jetzt klappt es schonmal, dass die neue Zeile erzeugt wird.
Der Rest ist leider etwas chaotisch bzw. funktioniert noch nicht richtig.
Hast du noch einen Tipp dafür?
Anzeige
AW: Neue Zeile einfügen, wenn Bedingung erfüllt
31.01.2018 20:29:14
onur

for i=...
if .....
Rows(i).Copy
Rows(i+1).Insert Shift:=xlDown
cells(i+1,6)=cells(i+1,8)
cells(i+1,8)=""
end if
next i

AW: Neue Zeile einfügen, wenn Bedingung erfüllt
31.01.2018 20:38:43
TomGie
Oh ja jetzt klappt es super, habe vielen lieben Dank :)
AW: Neue Zeile einfügen, wenn Bedingung erfüllt
31.01.2018 20:48:05
Gerd
Moin Tom
Sub a()
Dim i As Long
With ActiveSheet
For i = .Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
With .Cells(i, 8)
If .Value 

cu Gerd
Anzeige
AW: Neue Zeile einfügen, wenn Bedingung erfüllt
31.01.2018 21:27:19
TomGie
Moin Gerd,
ah geil, eine Variante mit With, die Berechnung wird bestimmt richtig schnell ablaufen, teste ich gleich mal, danke :)

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Neue Zeile einfügen, wenn Bedingung erfüllt


Schritt-für-Schritt-Anleitung

Um automatisch eine neue Zeile in Excel einzufügen, wenn eine bestimmte Bedingung erfüllt ist, kannst du ein VBA-Makro verwenden. In diesem Beispiel wird eine neue Zeile unterhalb der Zeile mit einem negativen Wert in Spalte H (Spalte 8) eingefügt. Die Schritte sind wie folgt:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:

    Sub NeueZeileEinfügen()
       Dim i As Long
       With ActiveSheet
           For i = .Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
               If .Cells(i, 8).Value < 0 Then
                   .Rows(i).Copy
                   .Rows(i + 1).Insert Shift:=xlDown
                   .Cells(i + 1, 6).Value = .Cells(i + 1, 8).Value
                   .Cells(i + 1, 8).Value = ""
               End If
           Next i
       End With
    End Sub
  4. Führe das Makro aus:

    • Drücke F5 oder wähle "Ausführen" > "Sub/UserForm ausführen".

Jetzt werden automatisch neue Zeilen eingefügt, wenn in Spalte H negative Werte vorhanden sind.


Häufige Fehler und Lösungen

  • Problem: Das Makro fügt keine neuen Zeilen ein.

    • Lösung: Stelle sicher, dass du die Bedingung korrekt überprüfst (z.B. If .Cells(i, 8).Value < 0 Then). Überprüfe auch, ob die Daten in der richtigen Spalte stehen.
  • Problem: Daten werden nicht korrekt kopiert.

    • Lösung: Achte darauf, dass der Copy-Befehl vor dem Insert-Befehl ausgeführt wird. Die Reihenfolge ist entscheidend.

Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, kannst du auch eine Formel nutzen, um eine neue Zeile einzufügen. Allerdings ist dies etwas komplizierter und erfordert zusätzliche Schritte, wie das Erstellen eines Hilfsblatts oder das Verwenden der Filterfunktion.

Für einfache Anwendungsfälle wäre die Verwendung von Excel-Formeln zur Überwachung von Bedingungen eine Option, jedoch ist VBA für das automatische Einfügen von Zeilen deutlich effektiver.


Praktische Beispiele

Hier ist ein einfaches Beispiel für die Nutzung des oben genannten Codes:

  • Beispiel: Angenommen, in deiner Tabelle sind folgende Werte in Spalte H vorhanden:
    5
    -2
    10
    -3

Nach Ausführung des Makros wird die Tabelle wie folgt aussehen:

5
-2
5 (kopiert)
10
-3
10 (kopiert)

Tipps für Profis

  • Makros optimieren: Verwende die With-Anweisung, um die Performance zu steigern, wenn du häufig auf dasselbe Objekt zugreifst.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um unerwartete Probleme beim Ausführen des Makros zu vermeiden.

  • Automatisierung: Du kannst das Makro auch an Ereignisse wie das Öffnen der Datei oder das Ändern von Zellen binden, um es noch benutzerfreundlicher zu gestalten.


FAQ: Häufige Fragen

1. Kann ich auch ohne VBA neue Zeilen einfügen? Ja, jedoch ist dies in Excel nicht so einfach und erfordert oft zusätzliche Schritte oder Formeln, was in vielen Fällen weniger effizient ist.

2. Wie kann ich das Makro anpassen, um andere Bedingungen zu prüfen? Du kannst die Bedingung in der If-Anweisung anpassen, z.B. If .Cells(i, 8).Value > 0 Then, um positive Werte zu überprüfen.

3. Funktioniert das Makro in allen Excel-Versionen? Ja, das VBA-Makro sollte in den meisten modernen Excel-Versionen (z.B. Excel 2010 und neuer) funktionieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige