Microsoft Excel

Herbers Excel/VBA-Archiv

Zellen kopieren mit Bedingungen (vba)

Betrifft: Zellen kopieren mit Bedingungen (vba) von: Max
Geschrieben am: 12.10.2020 15:18:34

Hallo zusammen,


ich habe folgendes Anliegen:


in der Beispieldatei soll der Text von Zelle A9 in die darunter liegenden leeren Zellen kopiert werden,

die nächste Zelle mit Inhalt soll dann wieder in die darunter liegenden leeren Zellen kopiert werden.

die Bedingung fürs kopieren wäre ob in der Benachbarten Zelle in Spalte B ein Inhalt ist


Das Layout bleibt immer gleich (A9 ist immer A9)

die anzahl der Wochen kann sich ändern (A15 ist nicht immer A15)


Hier findet ihr den Link zu der Excel:

https://www.herber.de/bbs/user/140830.xls



Vielen Dank im Voraus

Max

Betrifft: AW: Zellen kopieren mit Bedingungen (vba)
von: Edmund
Geschrieben am: 12.10.2020 15:26:10

Hallo Max

Ich glaube, ich würde das über eine Formel lösen und nicht über vba.
Die Formel in Zelle A10 müsste heißen:

WENN(B10="";"";A9)
Und diese Formeln kannst Du dann ja beliebig nach unten durchschleifen.

Gruß

Edmund

Betrifft: AW: Zellen kopieren mit Bedingungen (vba)
von: Gerd L
Geschrieben am: 12.10.2020 15:45:36

Moin Edmund!
Sub Unit()

    Dim C As Range
    
    For Each C In Range("B9:B" & Cells(Rows.Count, 2).End(xlUp).Row). _
    SpecialCells(xlCellTypeConstants, xlText).Areas.Offset(, -1)
        
        C.Value = C.Cells(1, 1).Offset(-1, 0)
    
    Next

End Sub

Gruß Gerd

Betrifft: AW: Zellen kopieren mit Bedingungen (vba)
von: Max
Geschrieben am: 13.10.2020 06:59:34

Hallo Gerd,

Vielen Dank für die schnelle Hilfe,

wenn ich das Makro starten möchte kommt bei mir der Laufzeitfehler '1004'

Die SpecialCells-Eigenschaft des Range-Objektes kann nicht zugeordnet werden.

hattest du es bei dir getestet?

Gruß Max

Betrifft: AW: Zellen kopieren mit Bedingungen (vba)
von: Gerd L
Geschrieben am: 13.10.2020 13:08:12

Moin Max,

nein. Da war noch ein Fehler drin und in deiner Spalte muss man zuerst die "Unsichtbaren" aufräumen.
Sub Unit()

    Dim C As Range
    
    Columns(2).Value = Columns(2).Value
    
    For Each C In Range("B9:B" & Cells(Rows.Count, 2).End(xlUp).Row). _
    SpecialCells(xlCellTypeConstants).Areas
        
        C.Offset(0, -1).Value = C.Cells(1, 1).Offset(-1, -1)
    
    Next

End Sub

Gruß Gerd

Betrifft: AW: Zellen kopieren mit Bedingungen (vba)
von: Daniel
Geschrieben am: 13.10.2020 13:29:36

Hi
am einfachsten, in dem man in die Leerzellen die Formel: nimm den Wert aus Zelle drüber einfügt
die Leerzellen kann man über die SpecialCells (als Excelmenü Start - Bearbeiten - Suchen und Auswählen - Inhalte) gezielt auswählen.
with Range("A9:A" & Cells(Rows.count, 2).end(xlup).row)
    .SpecialCells(xltypeblanks).FormulaR1c1 = "=R[-1]C"
    .Formula = .Value
End with

Gruß Daniel