Exel - tiedon siirto lomakkeesta

Kuinka saan siirrettyä tiedot luomastani lomakkeesta suoraan seuraavalla taulukkolehdellä olevan taulukon ensimmäiselle vapaana olevalle tyhjälle riville? Makrohan siihen pitää vääntää, mutta miten sen saa siirrettyä siihen ensimmäiseen vapaaseen riviin?
7827
Äänestä

Muut lukivat myös

Vastaukset 7

Vanhimmat

Ohessa makro, tämä tosin edellyttää että lomakkeen tiedot ovat jo rivimuodossa (esimerkissä lomakkeen rivillä 1):

--------------------------------
Sub EtsiEnsimmäinenTyhjäRivi()
'
' Macro1 Macro
' Macro recorded 20.5.2004 by Excelit.fi
'

'
'Kopioidaan Lomake-sivun tiedot
Sheets("Lomake").Select
Range("A1:D1").Select
Selection.Copy

'Etsitään Taulukko-sivulta ensimmäinen tyhjä rivi
Sheets("Taulukko").Select
Range("A1").Select
Cells.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False).Activate

'Liitetään tiedot arvoina
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

End Sub
--------------------------------

Äänestä
  • Kiitos! Toimii hyvin, mutta...
    Entäs jos lomakkeen tiedot ovat alekkain esim. soluissa D9, D11, D13, D15. Ja taulukko alkaa solusta C8.

    Äänestä

  • JaMo kirjoitti:

    Kiitos! Toimii hyvin, mutta...
    Entäs jos lomakkeen tiedot ovat alekkain esim. soluissa D9, D11, D13, D15. Ja taulukko alkaa solusta C8.

    Niin, oletin että olit jo ratkaissut että miten saat tiedot rivimuotoon, siksi en sitä makroon laittanut.
    Aika helppoa on hoitaa tuo homma kaavaviittauksilla. Eli viitata kopioitavissa soluissa noihin soluihin missä tiedot ovat tyyliin solu A1 "=D9", B1 "=D11", C1 "=D13" jne...
    Muitakin tapoja toki on mutta tuo on varmaankin helpoin tapa mikäli tietoja ei ole kovinkaan paljon. Mikäli haluat ettei tuo rivi näy lomakkeella niin kannattaa varmaan muotoilla solujen fontti valkoiseksi.

    Tuossa makrossa tyhjää riviä etsitään taulukossa sarakkesta A alkaen riviltä 1, katso kohta Range("A1").Select. Jos haluat etsiä tyhjää riviä sarakkesta C alkaen riviltä 8 niin korjaat tuon kohdan muotoon Range("C8").Select.

    Äänestä

  • JaMo kirjoitti:

    Kiitos! Toimii hyvin, mutta...
    Entäs jos lomakkeen tiedot ovat alekkain esim. soluissa D9, D11, D13, D15. Ja taulukko alkaa solusta C8.

    tämmöinen niinkuin haluat ?
    Sub kopio()
    Application.ScreenUpdating = False
    Sheets("taul1").Select
    Range("d9,d11,d13,d15").Select
    Selection.Copy
    Sheets("Taul2").Select
    Range("c65536").End(xlUp).Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlValues
    Application.ScreenUpdating = True
    Application.CutCopyMode = False
    End Sub

    Äänestä

  • Excelit.fi kirjoitti:

    Niin, oletin että olit jo ratkaissut että miten saat tiedot rivimuotoon, siksi en sitä makroon laittanut.
    Aika helppoa on hoitaa tuo homma kaavaviittauksilla. Eli viitata kopioitavissa soluissa noihin soluihin missä tiedot ovat tyyliin solu A1 "=D9", B1 "=D11", C1 "=D13" jne...
    Muitakin tapoja toki on mutta tuo on varmaankin helpoin tapa mikäli tietoja ei ole kovinkaan paljon. Mikäli haluat ettei tuo rivi näy lomakkeella niin kannattaa varmaan muotoilla solujen fontti valkoiseksi.

    Tuossa makrossa tyhjää riviä etsitään taulukossa sarakkesta A alkaen riviltä 1, katso kohta Range("A1").Select. Jos haluat etsiä tyhjää riviä sarakkesta C alkaen riviltä 8 niin korjaat tuon kohdan muotoon Range("C8").Select.

    Kiitoksia!
    Sainpa toimimaan, mutta tuli tehtyä vaikeamman kautta, eli kopioitua jokainen solu omaksi osakseen makroon. Eli rivejä tuli paljon. Mutta pääasia että pelittää!

    Äänestä

  • utelijas kirjoitti:

    tämmöinen niinkuin haluat ?
    Sub kopio()
    Application.ScreenUpdating = False
    Sheets("taul1").Select
    Range("d9,d11,d13,d15").Select
    Selection.Copy
    Sheets("Taul2").Select
    Range("c65536").End(xlUp).Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlValues
    Application.ScreenUpdating = True
    Application.CutCopyMode = False
    End Sub

    Sehän toimii mutta liittää arvot sarakkeeseen, Jos ymmärsin oikein JaMo halusi ne samalle riville. PasteSpecialiin pitää lisätä Transpose:=True.

    Selection.PasteSpecial Paste:=xlValues, _
    Transpose:=True

    Äänestä

  • Sivullinen kirjoitti:

    Sehän toimii mutta liittää arvot sarakkeeseen, Jos ymmärsin oikein JaMo halusi ne samalle riville. PasteSpecialiin pitää lisätä Transpose:=True.

    Selection.PasteSpecial Paste:=xlValues, _
    Transpose:=True

    huomio,pitää varmaan lukea kysymys tarkemmin vastaisuudessa. Kiitokset !

    Äänestä

Kommentoi aloitusta


JaMo kirjoitti:

Kuinka saan siirrettyä tiedot luomastani lomakkeesta suoraan seuraavalla taulukkolehdellä olevan taulukon ensimmäiselle vapaana olevalle tyhjälle riville? Makrohan siihen pitää vääntää, mutta miten sen saa siirrettyä siihen ensimmäiseen vapaaseen riviin?

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