VBA -apua: tiedon kopiointi ja toistaminen

Ingentingör

Varmaan simppeli juttu, mutta pitäisi tehdä seuraavanlainen koodi:
Taulukon 1 A-sarakkeessa on tekstitietoa, B-sarakkeessa on kokonaislukuarvo.

Saman työkirjan tyhjään/uuteen taulukkoon 2 ja sen A-sarakkeeseen pitäisi generoida Taulukko 1:n A-sarakkeen tekstiä niin monta kertaa kuin Taul1:n B -sarakkeen arvo osoittaa.

Esim.
Taul 1:
Kissa 5
Marsu 1
Koira 3
jne.

Ja näistä tiedoista kakkostaulukkoon pitäisi syntyä (A-sarakkeeseen):
Kissa
Kissa
Kissa
Kissa
Kissa
Marsu
Koira
Koira
Koira
jne.

6

440

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • madagaskaaja

      Tekisin while-silmukalla. Eli kun b-sarakkeessa on lukema, niin kopoidaan saman kohdan a-arvoa b-sarakkeen luvun verran uuteen tauluun, ja sen jälkeen siirryttäisiin seuraavalle riville, kunnes b:ssä ei ole enää mitään.

      • Kundepuu

        Sub Kopioi()
        Dim Vika As Long
        Dim Vika2 As Long
        Dim orig As Worksheet
        Dim kopio As Worksheet

        Set orig = Worksheets("Sheet1")
        Set kopio = Worksheets("Sheet2")
        Worksheets("Sheet2").Range("A:A") = ""

        Vika = orig.Range("A65536").End(xlUp).Row
        For i = 1 To Vika
        Vika2 = kopio.Range("A65536").End(xlUp).Row
        If Not Vika2 = 1 Then Vika2 = Vika2 1
        orig.Range("A" & i).Copy kopio.Range("A" & Vika2, kopio.Range("A" & Vika2 orig.Range("B" & i).Value - 1))
        Next
        End Sub

        Keep EXCELing
        @Kunde


      • Nexen
        Kundepuu kirjoitti:

        Sub Kopioi()
        Dim Vika As Long
        Dim Vika2 As Long
        Dim orig As Worksheet
        Dim kopio As Worksheet

        Set orig = Worksheets("Sheet1")
        Set kopio = Worksheets("Sheet2")
        Worksheets("Sheet2").Range("A:A") = ""

        Vika = orig.Range("A65536").End(xlUp).Row
        For i = 1 To Vika
        Vika2 = kopio.Range("A65536").End(xlUp).Row
        If Not Vika2 = 1 Then Vika2 = Vika2 1
        orig.Range("A" & i).Copy kopio.Range("A" & Vika2, kopio.Range("A" & Vika2 orig.Range("B" & i).Value - 1))
        Next
        End Sub

        Keep EXCELing
        @Kunde

        "Vika = orig.Range("A65536").End(xlUp).Row"

        Mistä tuo A65536 tulee?


      • Kundepuu

        65536 on maksimi rivimäärä yksittäisessä taulukossa EXCEl versioissa 97-2003 ja 2007-2013 vastaavasti rivien maksimimäärä 1048576.

        eli suomennettuna
        "Vika = orig.Range("A65536").End(xlUp).Row"
        hae viimeinen ei tyhjä rivi sarakkeesta A alkaen riviltä 65536 ylöspäin ja aseta se muuttujan vika arvoksi.
        Vastaavasti voidaan hakea alaspäin, vasemmalle ja oikealle ...

        jos varma, että käytössä versio 2007 tai uudempi voi silloin käyttää
        "Vika = orig.Range("1048576").End(xlUp).Row"

        Keep EXCELing
        @Kunde


      • jompailija

        Voisiko hyödyntää pelkkää saraketietoa, esim:

        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row


      • Kundepuu

        aivan toimiva toikin...


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Porvarimediat paniikissa demareiden huiman kannatuksen vuoksi

      Piti sitten keksiä "nimettömiin lähteisiin" perustuen taas joku satu. Ovat kyllä noloja, ja unohtivat sen, että vaalit
      Maailman menoa
      98
      6138
    2. KATASTROFI - Tytti Tuppurainen itse yksi pahimmista kiusaajista!!!

      STT:n lähteiden mukaan SDP:n eduskuntaryhmän puheenjohtaja Tytti Tuppurainen on käyttäytynyt toistuvasti epäasiallisesti
      Maailman menoa
      349
      5597
    3. Mikä siinä on ettei persuille leikkaukset käy?

      On esitetty leikkauksia mm. haitallisiin maataloustukiin, kuin myös muihin yritystukiin. Säästöjä saataisiin lisäksi lei
      Maailman menoa
      52
      2649
    4. Lääppijä Lindtman jäi kiinni itse teosta

      Lindtman kyselemättä ja epäasiallisesti koskettelee viestintäpäällikköä. https://www.is.fi/politiikka/art-2000011780852
      Maailman menoa
      104
      2056
    5. Juuri nyt! Tytti Tuppurainen on käyttäytynyt toistuvasti epäasiallisesti

      Ai että mä nautin, Tytti erot vireille! "Käytös on kohdistunut avustajia ja toisia kansanedustajia kohtaan, uutisoi STT
      Maailman menoa
      107
      1768
    6. Onko kaivattusi

      liian vetovoimainen seksuaalisesti?
      Ikävä
      124
      1707
    7. Puolen vuoden koeaika

      Voisi toimia meillä. Ensin pitäis selvittää "vaatimukset" puolin ja toisin, ennen kuin mitään aloittaa. Ja matalalla pro
      Ikävä
      19
      1613
    8. Tytti Tuppurainen nöyryyttää avustajiaan

      Tytti Tuppurainen nöyryyttää SDP:n eduskuntaryhmän kokouksissa sekä avustajia että kansanedustajia. Hän nolaa ihmisiä ju
      Kotimaiset julkkisjuorut
      180
      1267
    9. On todella hassua

      Ajatella että pitäisit erityisen kuumana tai seksikkäänä?
      Ikävä
      73
      1187
    10. Nuoret hakevat eläkkeelle, vaikka eivät ole olleet vielä töissäkään

      hyvin menee. Pieni vastoinkäyminen elämässä, ja heti masennutaan. Monet alle 30-vuotiaat hakevat työkyvyttömyyseläkettä
      Maailman menoa
      188
      998
    Aihe