Solun kopiointi alapuolella oleviin tyhjiin soluihin (VBA)

Tarvitsisin makron, jolla saan tietosolun sisällön kopioitua tyhjiin alapuolella oleviin soluihin kunnes vastaan tulee uusi tietosolu, joka sitten taas kopioidaan kaikkiin sen alapuolella oleviin tyhjiin soluihin jne.

Yritin väsätä tämmöistä, mutta eihän se tietystikään toimi:

Sub Kopioi_ylempi_solu_alempaan_tyhjään_soluun ()
For i = 1 To 99645
For j = 1 To 3
If.Cells(1, i 1) = "" then copy.Cells(1, i)
Paste.Cells(1, i 1)
Cells(j, i 1)
Next j
Next i
End Sub

Terveisin Jari Kemppainen
5136
Äänestä

Muut lukivat myös

Vastaukset 5

Vanhimmat

Sub Kopioi_ylempi_solu_alempaan_tyhjään_soluun()
For i = 1 To 99645
For j = 1 To 3
If Cells(i 1, j) = "" Then Cells(i, j).Copy Cells(i 1, j)
Next j
Next i
End Sub

Äänestä
  • Kiitos Tämmönen. Hyvin toimi, paitsi että kone hyytyi, joten piti suorittaa pienemmissä erissä.

    Äänestä

  • Jari K. kirjoitti:

    Kiitos Tämmönen. Hyvin toimi, paitsi että kone hyytyi, joten piti suorittaa pienemmissä erissä.

    Onko tarpeellista täyttää joka ikinen rivi?

    Toiminta voi nopeutua, jos rivin
    If Cells(i 1, j) = "" Then Cells(i, j).Copy Cells(i 1, j)
    muuttaa muotoon
    If Cells(i 1, j) = "" Then Cells(i 1, j) = Cells(i, j)
    Tämä kopioi pelkät arvot ilman muotoiluja tms.

    Äänestä

valitse joku noista riveista, mikä sopii tapaukseesi ja ei takuulla hyydy...

ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks) = "=R[-1]C"

Range("A1:D9").SpecialCells(xlCellTypeBlanks) = "=R[-1]C"

Selection.SpecialCells(xlCellTypeBlanks) = "=R[-1]C"


Keep EXCELing
@Kunde

Äänestä
  • tossa vielä universaalimakro, käytössä olevalle alueelle...

    Sub TäytäTyhjät()
    Range("A1").Resize(Cells.Find(What:="*", SearchOrder:=xlRows, _
    SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _
    Cells.Find(What:="*", SearchOrder:=xlByColumns, _
    SearchDirection:=xlPrevious, LookIn:=xlValues).Column).SpecialCells(xlCellTypeBlanks) = "=R[-1]C"
    End Sub

    Keep EXCELing
    @Kunde

    Äänestä

Kommentoi aloitusta


Jari K. kirjoitti:

Tarvitsisin makron, jolla saan tietosolun sisällön kopioitua tyhjiin alapuolella oleviin soluihin kunnes vastaan tulee uusi tietosolu, joka sitten taas kopioidaan kaikkiin sen alapuolella oleviin tyhjiin soluihin jne.

Yritin väsätä tämmöistä, mutta eihän se tietystikään toimi:

Sub Kopioi_ylempi_solu_alempaan_tyhjään_soluun ()
For i = 1 To 99645
For j = 1 To 3
If.Cells(1, i 1) = "" then copy.Cells(1, i)
Paste.Cells(1, i 1)
Cells(j, i 1)
Next j
Next i
End Sub

Terveisin Jari Kemppainen

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu