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
440
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
Porvarimediat paniikissa demareiden huiman kannatuksen vuoksi
Piti sitten keksiä "nimettömiin lähteisiin" perustuen taas joku satu. Ovat kyllä noloja, ja unohtivat sen, että vaalit986138KATASTROFI - Tytti Tuppurainen itse yksi pahimmista kiusaajista!!!
STT:n lähteiden mukaan SDP:n eduskuntaryhmän puheenjohtaja Tytti Tuppurainen on käyttäytynyt toistuvasti epäasiallisesti3495597Mikä siinä on ettei persuille leikkaukset käy?
On esitetty leikkauksia mm. haitallisiin maataloustukiin, kuin myös muihin yritystukiin. Säästöjä saataisiin lisäksi lei522649Lääppijä Lindtman jäi kiinni itse teosta
Lindtman kyselemättä ja epäasiallisesti koskettelee viestintäpäällikköä. https://www.is.fi/politiikka/art-20000117808521042056Juuri 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 STT1071768- 1241707
Puolen vuoden koeaika
Voisi toimia meillä. Ensin pitäis selvittää "vaatimukset" puolin ja toisin, ennen kuin mitään aloittaa. Ja matalalla pro191613Tytti Tuppurainen nöyryyttää avustajiaan
Tytti Tuppurainen nöyryyttää SDP:n eduskuntaryhmän kokouksissa sekä avustajia että kansanedustajia. Hän nolaa ihmisiä ju1801267- 731187
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ä188998