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
491
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
Veroaste on Suomessa viitisen prosenttiyksikköä liian matala
Veropohjaa on rapautettu käytännössä koko kulunut vuosituhat, jonka vuoksi valtion menoja on jouduttu rahoittamaan velka912541- 671475
Kyläkauppias ajoi kännissä töistä kotiin
Ei edes kallis auto estä humalassa ajamista, vaikka luulisi alkolukko olevan sellaisessa jo vakiovarusteena. https://ww861447EU komissio - EU-elpymisrahoja voidaan käyttää TILAPÄISESTI väärin!
Espanja ohjasi miljardeja euroja – Nyt EU-komissio teki yllättävän paljastuksen Skandaaliksi noussut Espanjan EU-rahoje131208- 81943
Kiitos upeasta palvelusta kukkamyyjä
Kiitos sinulle upea kaunis kukkamyyjä Kuhmon torilla 🌹 Upea iloinen asenteesi ja kaunis hymysi pelasti päiväni ❤️ Jäi19920Ratikka Turkuun
Ei hyvä. Ja syy on siinä , kukaan ei osaa suunnitella oikeaa reittiä. Pitää huomioide, kiskoja sijaintia ei voi muutta105814Miehet trikoissaan
On se kauhian näkköistä, kun miehet tiukossa trikkoissa juoksentelloo ja mulukku paestaa trikkoijjen läpi. Kahtokkee pe37814- 54793
- 30716