Bedingung in Zeile, in Range Wert kopieren

  • Excel

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von FloFuchs.

    Bedingung in Zeile, in Range Wert kopieren

    Hallo Leute,
    ich stehe absolut auf dem Schlauch. Ich habe eine Tabelle der folgenden Struktur:

    In der Zelle A1 steht "Product", in A2-A23 stehen Daten, in Zelle A24 wieder "Product" usw.
    Neben der Zelle A1, A24 (also neben der Product Zelle) steht der Produktname.
    Ich möchte nun einen Code bauen, der in Spalte G neben die einzelnen Daten das jeweilige Produkt schreibt.
    Bisher habe ich diesen Code geschrieben:


    Dim Product As Variant
    Dim a As Double
    Dim b As Double

    a = 1
    b = 7
    LR2 = Range("A65536").End(xlUp).Row
    For i = 1 To LR2
    If Cells(i, 1) = "PROGRAM:" Then
    Program = Cells(i, 2)
    Cells(i + 1, b) = Program
    a = a + 1
    Else
    a = a + 1
    End If
    Next i
    End Sub


    Leider schreibt er nur in die erste Zeile den Produktnamen in die Spalte G und anschliessend nicht mehr.
    Nach welcher Logik ist es möglich Für die Zeilen 1 bis x den jeweiligen Produktnamen in Spalte G zu schreiben und sobald ein neuer Produktname auftaucht diesen in die nächsten Zeilen zu schreiben?

    Sorry, dass das hier so umständlich beschrieben ist, aber ich habe leider keine Ahnung wie ich einen Screenshot o.ä. hochladen kann.
    Ich bin mir nich sicher ob ich es genau verstanden hab...

    würde es auf die art probieren:

    Visual Basic-Quellcode

    1. Dim rngA as Range
    2. for each rngA in Range("A:A")
    3. if rngA = "" then exit for
    4. if rngA = "DeinSuchbegriff" then
    5. 'was auch immer du tu willst
    6. rngA.offset(0,6)=rngA.offset(0,1) 'Spalte G wird mit Wert aus Spalte B beschrieben
    7. end if
    8. next rngA
    Danke für deine Antwort, aber ich habe mich wohl echt dumm ausgedrückt.
    Im Anhang mal ein Screenshot wie das ganze aussieht. Ich denke es wird dann auch deutlich, was genau ich vorhabe.
    Es soll also in Spalte G immer das Programm des Produkts geschrieben werden. Das Programm ist übrigens nicht immer PMM, sondern gelegentlich auch ein anderes.
    Bilder
    • pic.JPG

      223,99 kB, 1.242×821, 216 mal angesehen
    klar kein thema. solange mir geholfen wird, scheue ich keine Mühen :)

    also im anhang ein neuer screenshot. der vba code soll in Spalte A das Wort "PROGRAM:" finden und den zugehörigen wert (blaue Schrift) in die zugehörige Spalte (rote Schrift) schreiben. Es ist zu beachten, dass jedes Produkt ein andere Programm haben kann, also kann man nicht einfach "PMM" fest als Programm deklinieren.
    Sind die Abstände immer gleich? oder muss man extra noch auslesen wie oft geschrieben werden muss?
    du musst dann halt noch eine Schleife einbauen in den Bereich wo der Offset geschrieben wird.

    sprich

    Visual Basic-Quellcode

    1. for i = 1 to entwederEinFesterWertOderEineSubDieDieAnzahlSucht
    2. rngA.offset(i,6) = rngA.offset(0,1)
    3. next i
    leider ist es kein fester wert.
    gibt es eine einfach möglichkeit die anzahl der zelle von einer leeren zelle bis zur nächsten leeren zelle zu zählen?
    ich würde dann einfach in Zelle F2 anfangen und in der nächsten leeren Zelle nach unten aufhören zu zählen.
    ja klar...

    du vergleichst solange die nächste Zelle mit "" (Nix) bis was anderes kommt

    Visual Basic-Quellcode

    1. while
    2. .
    3. .
    4. wend


    zählst in dieser schleife einen Zähler hoch un wenn die Schleife aussteigt hat dein Zähler den wert bis zum nächsten Eintrag

    bzw wenn du eine leere Zelle suchst, musst natürlich die Bedingung negieren...

    Visual Basic-Quellcode

    1. not deineBedingung