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.
VBA -apua: tiedon kopiointi ja toistaminen
6
102
Vastaukset
- 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
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ä, Mi1887376- 424292
Poliisiauto Omasp:n edessä parkissa
Poliisiauto oli parkissa monta tuntia Seinäjoen konttorin edessä tänään. Haettiinko joku tai jotain pankista tutkittavak262125Haluan jutella kanssasi Nainen
Olisiko jo aika tavata ja avata tunteemme...On niin paljon asioita joihin molemmat ehkä haluaisimme saada vastaukset...O182049Onko mies niin,
että sinulle ei riitä yksi nainen? Minulle suhde tarkoittaa sitoutumista, tosin eihän se vankila saa olla kummallekaan.271879Voitasko leikkiä jotain tunnisteleikkiä?
Tietäisi ketä täällä käy kaipaamassa.. kerro jotain mikä liittyy sinuun ja häneen eikä muut tiedä. Vastaan itsekin kohta771696Armi Aavikko Malmin hautausmaa
Haudattiinko Armi arkussa Malmin hautausmaalle vai tuhkattiinko hänet? Kuka tietää asiasta oikein?351671Haluisin suudella ja huokailla
ja purra kaulaasi ja rakastella sinua. Haluisin puristella rintojasi ja pakaroitasi. Ei sinulla taida olla kuitenkaan ni221629Tietysti jokainen ansaitsee
Hän varmasti ansaitsee vain parasta ja sopivinta tietenkin, suon sen onnen hänelle enemmän kuin mielelläni. Aika on nyt171613Miksi näin?
Miksi vihervassut haluaa maahan porukkaa jonka pyhä kirja kieltää sopeutumisen vääräuskoisten keskuuteen? Näin kotoutumi391428