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

102

    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. Katso: Ohhoh! Miina Äkkijyrkkä sai käskyn lähteä pois Farmi-kuvauksista -Kommentoi asiaa: "En ole.."

      Tämä oli shokkiyllätys. Oliko tässä kyse tosiaan siitä, että Äkkijyrkkä sanoi asioita suoraan vai mistä.... Tsemppiä, Mi
      Tv-sarjat
      188
      7376
    2. Voi kun mies rapsuttaisit mua sieltä

      Saisit myös sormiisi ihanan tuoksukasta rakkauden mahlaa.👄
      Ikävä
      42
      4292
    3. Poliisiauto Omasp:n edessä parkissa

      Poliisiauto oli parkissa monta tuntia Seinäjoen konttorin edessä tänään. Haettiinko joku tai jotain pankista tutkittavak
      Seinäjoki
      26
      2125
    4. Haluan jutella kanssasi Nainen

      Olisiko jo aika tavata ja avata tunteemme...On niin paljon asioita joihin molemmat ehkä haluaisimme saada vastaukset...O
      Ikävä
      18
      2049
    5. Onko mies niin,

      että sinulle ei riitä yksi nainen? Minulle suhde tarkoittaa sitoutumista, tosin eihän se vankila saa olla kummallekaan.
      Tunteet
      27
      1879
    6. Voitasko leikkiä jotain tunnisteleikkiä?

      Tietäisi ketä täällä käy kaipaamassa.. kerro jotain mikä liittyy sinuun ja häneen eikä muut tiedä. Vastaan itsekin kohta
      Ikävä
      77
      1696
    7. Armi Aavikko Malmin hautausmaa

      Haudattiinko Armi arkussa Malmin hautausmaalle vai tuhkattiinko hänet? Kuka tietää asiasta oikein?
      Kotimaiset julkkisjuorut
      35
      1671
    8. Haluisin suudella ja huokailla

      ja purra kaulaasi ja rakastella sinua. Haluisin puristella rintojasi ja pakaroitasi. Ei sinulla taida olla kuitenkaan ni
      Ikävä
      22
      1629
    9. Tietysti jokainen ansaitsee

      Hän varmasti ansaitsee vain parasta ja sopivinta tietenkin, suon sen onnen hänelle enemmän kuin mielelläni. Aika on nyt
      Ikävä
      17
      1613
    10. Miksi näin?

      Miksi vihervassut haluaa maahan porukkaa jonka pyhä kirja kieltää sopeutumisen vääräuskoisten keskuuteen? Näin kotoutumi
      Maailman menoa
      39
      1428
    Aihe