Excel: Kopieren + Einfügen in einer Spalte BIS nächster Wert auftritt

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Excel: Kopieren + Einfügen in einer Spalte BIS nächster Wert auftritt

    Hallo zusammen,

    ich hab hier eine Liste mit Fahrzeugen und Hersteller die für meine Zwecke sehr dämlich gestaltet ist.

    Es steht z.B. der Fahrzeughersteller immer nur in der obersten Zelle eines Bereichs. Für den Import in ein Programm brauche ich diesen aber in JEDER Zelle.

    Ich suche also nach einem Befehl, der folgendes ausführt:

    WENN du eine Zelle mit einem Inhalt findest, DANN KOPIERE diese und füge diese SOLANGE in die zellen darunter ein, BIS der nächste Wert auftaucht.

    Ich hätte irgendwas mit DO LOOP WHILE probiert, aber ich weiß da nicht wirklich weiter...

    VB.NET-Quellcode

    1. Do
    2. For i = 7 To 6000
    3. If Cells(i, 1).Value = True Then
    4. Cells(i, 1).Copy Destination:=Cells(i, 1)
    5. End If
    6. Next i
    7. Loop While Cells(i, 1) = True


    aber damit rührt sich nix...
    Kann ja auch nix.
    Die Schleife kopiert den "leeren" Wert in die leere Zeile. Bzw den gefundenen Wert in die gleiche Zelle. Da die sich ja nach der then Bestimmung nicht geändert hat.

    Deine Schleife fängt bei Zeile 7 an.
    Lass die do while Schleife weg.
    Und erzähl mal wo Destination ist?


    Nehmen wir mal an, das cells(5,1) einen Inhalt hat und du so lange die nachfolgenden Felder mit diesem Inhalt füllt sollte es so aussehen. Denke ich.

    VB.NET-Quellcode

    1. Dim Ersatz as String
    2. For i= 7 to 6000
    3. If cells(i, 1).value= True then
    4. ersatz = cells(i,1).value
    5. i=i+1
    6. Cells(i,1).value= ersatz
    7. End if
    8. Next i


    Ungetestet, da nur am iPad geschrieben.
    Ich hoffe du verstehst sie ich das meine.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „tulla“ ()

    hm, ja, scheint mir sinnig. aber auf ne Lösung komm ich trotzdem net ^^

    Also ich hab in Spalte A die HErsteller:

    angefangen von A wie Alfa bis z.B. B wie BMW.
    dazwischen sind die Zellen leer. Nun soll aber das erste Alfa kopiert werden in die Zellen darunter, und zwar soweit, bis das nächste, also BMW, beginnt.
    Hatte endlich mal wieder nen Rechner wo MS Office drauf ist.
    So das funktioniert:

    VB.NET-Quellcode

    1. Dim ersatz As String ' Variable
    2. ersatz = "" ' variable setzen
    3. For i = 3 To 50 'Schleife beginn
    4. If Cells(i, 2) <> "" Then ' prüfen ob die Zeile allgemein gefüllt ist um nicht bis zum ende der schleife den letzten gefunden wert zu setzen
    5. If Cells(i, 1).Value <> "" Then
    6. ersatz = Cells(i, 1).Value
    7. End If
    8. If Cells(i, 1).Value = "" Then Cells(i, 1).Value = ersatz
    9. End If
    10. Next i
    Hi Tulla,

    das war nicht ganz korrekt, denn es ging nix.
    Aber ich bin selbst draufgekommen:

    VB.NET-Quellcode

    1. Dim i As Integer
    2. Dim ersatz As String ' Variable
    3. ersatz = "" ' variable setzen
    4. For i = 7 To 6000 'Schleife beginn
    5. If Cells(i, 1) <> "" Then ' prüfen ob die Zeile allgemein gefüllt ist um nicht bis zum ende der schleife den letzten gefunden wert zu setzen
    6. If Cells(i, 1).Value <> "" Then
    7. ersatz = Cells(i, 1).Value
    8. End If
    9. If Cells(i + 1, 1).Value = "" Then Cells(i + 1, 1).Value = ersatz
    10. End If
    11. Next i


    saucool, danke dir :)
    Hallo zusammen

    ch erhalte aus einer Applikation leider unvollständige Auswertungen. Es wird jeweils nur eine Zelle mit den Benutzerdaten befüllt. Die nachstehenden Zellen sind dann leer, obwohl diese auch zu diesem Benutzer gehören.

    Ich möchte nun, dass alle leeren Zellen mit dem obenstehenden Wert befüllt werden, bis sich der Wert ändert. Danach wird der neue Wert in die darunter stehenden Zellen hinterlegt. Ich konnte ein Makro "programmieren" was auch funktioniert - leider nur in der Spalte A. Was habe ich vergessen, um das gesamte Tabellenblatt in Excel zu berücksichtigen? Vielen lieben Dank für die Antwort.

    Sub test2()
    Dim i As Integer
    For i = 2 To 3000
    If Cells(i, 1) <> "" Then
    If Cells(i, 1).Value <> "" Then
    End If
    If Cells(i + 1, 1).Value = "" Then Cells(i + 1, 1).Value = Cells(i, 1).Value
    End If
    Next i
    End Sub
    @desisut Bitte erstelle für deine Frage einen neuen Thread, dieser ist uralt und erledigt. Wenn es sich um VBA dreht, müsstest du auch ins VBA-Forum posten (hier im Thread geht's um VB.NET, auch wenn's eher nach VBA aussieht).
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum