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

Forumthread: Wert finden u Zeile einfügen nach bestimmten Wert

Wert finden u Zeile einfügen nach bestimmten Wert
27.12.2015 18:44:05
Stefan
Hallo,
ich habe ein kleines Excel-Makro welches Werte sortiert, dies funktioniert auch soweit. In einem Punkt komme ich nicht weiter. Ich benötige den Code für die Suche nach einen bestimmten Wert (z.B. Hallo) in einer Spalte (kann mehrfach vorkommen), wenn der Wert gefunden wurde soll eine neue Zeile unter einen bestimmten anderen Wert (z.B. Montag) eingefügt werden (kann auch mehrfach vorkommen). Bekomme es nur hin, dass eine neue Zeile unter oder über dem Wert (Hallo) eingefügt wird.
Vielleicht kann mir jemand helfen. Ich bin neu hier und kenne mich nicht mit den Gepflogenheiten in einem Forum aus und bitte um Nachsicht.
Schöne Grüße
Stefan

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert finden u Zeile einfügen nach bestimmten Wert
27.12.2015 19:34:48
Michael
Hallo Stephan,
eine Beispieldatei mit dem, was Du bereits hast, wäre ganz sinnvoll.
Die Geschichte als solche ist nicht recht nachvollziehbar: woher soll Excel wissen, bei welchem "Montag" es beim jeweiligen Treffer von "Hallo" aktiv werden soll? Da muß es noch einen Zusammenhang geben, den Du uns nicht genannt hast.
Schöne Grüße,
Michael

Anzeige
Wert finden u Zeile einfügen nach bestimmten Wert
27.12.2015 20:43:06
Stefan
Hallo Michael,
vielen Dank für deine schnelle Antwort.
Also in Spalte F stehen verschiedene Wörter unter anderem "Hallo" und "Montag". Wenn ein "Hallo" kommt folgt immer irgendwann ein "Montag" vor dem nächsten "Hallo". Hier soll zu jedem Hallo unter dem jeweiligen "Montag" eine Zeile "Storno Hallo" eingefügt werden.
Bsp.:
Spalte F
Bezeichnung
Haus
Garten
Hallo
Tanzen
Auto
Montag
Haus
Garten
Hallo
Auto
Montag
...
Bisher habe ich folgenden Code, dieser fügt aber nur unter dem "Hallo" direkt ein "Storno Hallo" ein.
For e = 1 To 300
If Cells(e, 6).Value = "Hallo" Then
Cells((e + 1), 6).Select
Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.FormulaR1C1 = "Storno Hallo"
End If
MfG
Stefan

Anzeige
AW: Wert finden u Zeile einfügen nach bestimmten Wert
27.12.2015 21:11:35
Sepp
Hallo Stefan,
Sub Hallo()
Dim rngH As Range, rngM As Range
Dim strFirst As String

With ActiveSheet
  Set rngH = .Range("F:F").Find(What:="Hallo", LookIn:=xlValues, LookAt:=xlWhole, _
    MatchCase:=False, SearchFormat:=False, After:=.Cells(.Rows.Count, 6), _
    SearchDirection:=xlNext, SearchOrder:=xlByRows)
  If Not rngH Is Nothing Then
    strFirst = rngH.Address
    Do
      Set rngM = Nothing
      Set rngM = .Range("F:F").Find(What:="Montag", LookIn:=xlValues, LookAt:=xlWhole, _
        MatchCase:=False, SearchFormat:=False, After:=rngH)
      If Not rngM Is Nothing And rngM.Row > rngH.Row Then
        rngM.Offset(1, 0).Insert xlDown, xlFormatFromLeftOrAbove
        rngM.Offset(1, 0) = "Storno Hallo"
      End If
      Set rngH = .Range("F:F").Find(What:="Hallo", LookIn:=xlValues, LookAt:=xlWhole, _
        MatchCase:=False, SearchFormat:=False, After:=rngH)
    Loop While Not rngH Is Nothing And strFirst <> rngH.Address
  End If
End With


Set rngH = Nothing
Set rngM = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Wert finden u Zeile einfügen nach bestimmten Wert
27.12.2015 21:36:23
Stefan
Hi Sepp,
vielen Dank, es funktioniert soweit schon einmal gut. Aber die Werte die in Spalte A bis E stehen werden nicht weiter geschoben. Er soll schon eine ganze Zeile einfügen und den zugehörigen Wert aus Spalte E ebenfalls kopieren. Hätte ich vielleicht schon erwähnen sollen. Sorry!
MfG
Stefan

Anzeige
AW: Wert finden u Zeile einfügen nach bestimmten Wert
27.12.2015 22:01:32
Sepp
Hallo Stefan,
Sub Hallo()
Dim rngH As Range, rngM As Range
Dim strFirst As String

With ActiveSheet
  Set rngH = .Range("F:F").Find(What:="Hallo", LookIn:=xlValues, LookAt:=xlWhole, _
    MatchCase:=False, SearchFormat:=False, After:=.Cells(.Rows.Count, 6), _
    SearchDirection:=xlNext, SearchOrder:=xlByRows)
  If Not rngH Is Nothing Then
    strFirst = rngH.Address
    Do
      Set rngM = Nothing
      Set rngM = .Range("F:F").Find(What:="Montag", LookIn:=xlValues, LookAt:=xlWhole, _
        MatchCase:=False, SearchFormat:=False, After:=rngH)
      If Not rngM Is Nothing And rngM.Row > rngH.Row Then
        rngM.Offset(1, 0).EntireRow.Insert xlDown, xlFormatFromLeftOrAbove
        rngM.EntireRow.Copy .Cells(rngM.Row + 1, 1)
        rngM.Offset(1, 0) = "Storno Hallo"
      End If
      Set rngH = .Range("F:F").Find(What:="Hallo", LookIn:=xlValues, LookAt:=xlWhole, _
        MatchCase:=False, SearchFormat:=False, After:=rngH)
    Loop While Not rngH Is Nothing And strFirst <> rngH.Address
  End If
End With


Set rngH = Nothing
Set rngM = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Wert finden u Zeile einfügen nach bestimmten Wert
28.12.2015 20:38:21
Stefan
Hey Sepp,
das funktioniert, aber er kopiert mir die Werte Spalten A bis E von "Montag" und nicht von "Hallo" nach "Storno Hallo". Hast du dazu noch eine Idee, brauche die gleichen Werte wie in Zeile "Hallo".
Gruß
Stefan

AW: Wert finden u Zeile einfügen nach bestimmten Wert
28.12.2015 20:51:20
Sepp
Hallo Stefan,
ein bisschen selber nachdenken und man könnte auf die Lösung kommen!
Statt
rngM.EntireRow.Copy .Cells(rngM.Row + 1, 1)

einfach
rngH.EntireRow.Copy .Cells(rngM.Row + 1, 1)
Gruß Sepp

Anzeige
AW: Wert finden u Zeile einfügen nach bestimmten Wert
28.12.2015 21:11:45
Stefan
Danke Sepp,
funktioniert sehr gut. Vielen Dank nochmal.
Gruß
Stefan
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilen einfügen und Werte finden in Excel


Schritt-für-Schritt-Anleitung

Um in Excel eine neue Zeile unter einem bestimmten Wert einzufügen und dabei einen anderen Wert zu finden, kannst Du folgendes VBA-Makro verwenden. Du musst sicherstellen, dass die Spalte, in der Du suchst, die korrekten Werte enthält (z.B. "Hallo" und "Montag"). Der Code funktioniert am besten in Excel 2016 und höher.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Sub ZeileEinfügen()
    Dim rngH As Range, rngM As Range
    Dim strFirst As String

    With ActiveSheet
        Set rngH = .Range("F:F").Find(What:="Hallo", LookIn:=xlValues, LookAt:=xlWhole, _
                                       MatchCase:=False, SearchFormat:=False, _
                                       After:=.Cells(.Rows.Count, 6), _
                                       SearchDirection:=xlNext, SearchOrder:=xlByRows)
        If Not rngH Is Nothing Then
            strFirst = rngH.Address
            Do
                Set rngM = Nothing
                Set rngM = .Range("F:F").Find(What:="Montag", LookIn:=xlValues, LookAt:=xlWhole, _
                                               MatchCase:=False, SearchFormat:=False, After:=rngH)
                If Not rngM Is Nothing And rngM.Row > rngH.Row Then
                    rngM.Offset(1, 0).EntireRow.Insert xlDown, xlFormatFromLeftOrAbove
                    rngH.EntireRow.Copy .Cells(rngM.Row + 1, 1)
                    rngM.Offset(1, 0) = "Storno Hallo"
                End If
                Set rngH = .Range("F:F").Find(What:="Hallo", LookIn:=xlValues, LookAt:=xlWhole, _
                                               MatchCase:=False, SearchFormat:=False, After:=rngH)
            Loop While Not rngH Is Nothing And strFirst <> rngH.Address
        End If
    End With
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Führe das Makro aus, indem Du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Häufige Fehler und Lösungen

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

    • Lösung: Überprüfe, ob die Werte "Hallo" und "Montag" in der richtigen Spalte (z.B. Spalte F) vorhanden sind. Achte darauf, dass die Schreibweise genau übereinstimmt.
  • Problem: Die Werte aus Spalten A bis E werden nicht korrekt kopiert.

    • Lösung: Stelle sicher, dass im Code rngH.EntireRow.Copy verwendet wird, um die korrekten Werte zu kopieren.

Alternative Methoden

Eine alternative Methode, um alle Zeilen mit einem bestimmten Wert in Excel anzuzeigen, ist die Verwendung der Filterfunktion. Hier kannst Du die Filteroptionen verwenden, um nur die Zeilen anzuzeigen, die den gewünschten Wert enthalten.

  1. Wähle die gesamte Tabelle aus.
  2. Gehe zu DatenFilter.
  3. Klicke auf den Dropdown-Pfeil in der Spalte, die Du filtern möchtest, und wähle den gewünschten Wert aus.

Praktische Beispiele

Angenommen, Du hast eine Liste in Spalte F:

F
Haus
Garten
Hallo
Tanzen
Auto
Montag
Haus
Garten
Hallo
Auto
Montag

Wenn Du das Makro ausführst, wird eine Zeile mit "Storno Hallo" unter jedem "Montag" eingefügt, und die gesamte Zeile von "Hallo" wird kopiert.


Tipps für Profis

  • Du kannst das Makro anpassen, um verschiedene Werte zu suchen, indem Du die Suchbegriffe in den .Find-Methoden änderst.
  • Nutze Debug.Print im Code, um Zwischenergebnisse zu überprüfen, falls etwas nicht wie gewünscht funktioniert.
  • Speichere Deine Excel-Datei im .xlsm-Format, um die Makros zu erhalten.

FAQ: Häufige Fragen

1. Was sind Push-Zellen in Excel? Push-Zellen sind Zellen, die bei der Einfügung neuer Zeilen oder Spalten verschoben werden. Dies ist wichtig, wenn Du neue Daten in eine Tabelle einfügst und bestehende Daten nicht überschreiben möchtest.

2. Wie finde ich Push-Zellen in Excel? Um Push-Zellen zu finden, kannst Du entweder nach den Zellen suchen, die sich verändern, oder Du siehst die Auswirkungen der Einfügung direkt in Excel, nachdem Du das Makro ausgeführt hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige