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

93

    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. Nellietä Emmaa ja Amandaa stressaa

      Ukkii minnuu Emmaa ja Amandaa stressaa ihan sikana joten voidaanko me koko kolmikko hypätä ukin kainaloon ja syleilyyn k
      Isovanhempien jutut
      7
      1262
    2. Mielessäni vieläkin T

      Harmi että siinä kävi niinkuin kävi, rakastin sinua. Toivotan sulle kaikkea hyvää. Toivottavasti löydät sopivan ja hyvän
      Ikävä
      19
      1245
    3. Ei luottoa lakko maahan

      Patria menetti sovitun ksupan.
      Suomen Keskusta
      5
      1166
    4. Nähtäiskö ylihuomenna taas siellä missä viimeksikin?

      Otetaan ruokaöljyä, banaaneita ja tuorekurkkuja sinne messiin. Tehdään taas sitä meidän salakivaa.
      Ikävä
      2
      1164
    5. Sinäkö se olit...

      Vai olitko? Jostain kumman syystä katse venyi.. Ajelin sitten miten sattuu ja sanoin ääneen siinä se nyt meni😅😅... Lis
      Ikävä
      1
      1143
    6. Persut petti kannattajansa, totaalisesti !

      Peraujen fundamentalisteille, vaihtkaa saittia. Muille, näin sen näimme. On helppo luvata kehareille, eikä ne ymmärrä,
      Maailman menoa
      1
      1141
    7. Housuvaippojen käyttö Suomi vs Ulkomaat

      Suomessa housuvaippoja aletaan käyttämään vauvoilla heti, kun ne alkavat ryömiä. Tuntuu, että ulkomailla housuvaippoihin
      Vaipat
      2
      1134
    8. Pupuhuhdasta löytyi lähes sadan kilon miljoonalasti huumeita

      Pupuhuhdasta löytyi lähes sadan kilon miljoonalasti huumeita – neljä Jyväskylän Outlaws MC:n jäsentä vangittu: "Määrät p
      Jyväskylä
      42
      1127
    9. Hyvää yötä ja kauniita unia!

      Täytyy alkaa taas nukkumaan, että jaksaa taas tämän päivän haasteet. Aikainen tipu madon löytää, vai miten se ärsyttävä
      Tunteet
      3
      1119
    10. Lepakot ja lepakkopönttö

      Ajattelin tehdä lepakkopöntön. Tietääkö joku ovatko lepakot talvella lepakkopöntössä ´vai jossain muualla nukkumassa ta
      2
      1110
    Aihe