praegune kellaaeg 19.06.2025 15:23:55
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
TheAnswer
HV kasutaja

liitunud: 28.05.2006
|
29.12.2009 23:44:23
Abi exceli makroga |
|
|
tegemist siis sellise tabeliga(kokku umbes 40 veergu ja üle 20 000 rea): http://theanswer.planet.ee/Ex/tabel.png
Iga veeru jaoks on olemas mingi lävend.
Oleks vaja teisele lehele iga jaama nime alla vastava lävendi ületanud kuupäevade nimekirja.
Hetkel olemas selline macro
vb:
|
Do If ActiveCell >= "vastav lävend" Then ActiveCell.Offset(0, -1).Copy Sheets("Sheet2").Select 'Range("A1").Select Line1: If ActiveCell = "" Then Selection.PasteSpecial Paste:=xlPasteValues ActiveCell.Offset(1, 0).Activate GoTo Line2 ElseIf ActiveCell > 0 Then ActiveCell.Offset(1, 0).Activate GoTo Line1 End If Line2: Sheet1.Activate ActiveCell.Offset(1, 0).Activate ElseIf ActiveCell < 5 Then ActiveCell.Offset(1, 0).Activate End If Loop Until ActiveCell.Value = "" End Sub
|
See aga ei oska võtta igale jaamale vastavat lävendit ja iga uue jaama uurimiseks peaksin offseti muutma.
Äkki on mingeid elegantsemaid lahendusi?
Ette tänades.
viimati muutis TheAnswer 30.12.2009 14:06:54, muudetud 1 kord |
|
Kommentaarid: 45 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
43 |
|
tagasi üles |
|
 |
Le Inc
HV Guru

liitunud: 06.09.2002
|
30.12.2009 13:02:38
|
|
|
Tabelil on veerud (column) ja read (rows)!
Mis asi see "lävend" on? Mingi X string mille järgi otsida? Tundub muidu suhteliselt lihtne liiguta -> kopeeri asi olevat.
Kopeerimine Selection.Paste kaudu on aeglane ja teeb macro veelgi aeglasemaks! Kasuta otsest "kopeerimist" Cells(k, 1) = Cells(k, 3) jne.
|
|
Kommentaarid: 56 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
54 |
|
tagasi üles |
|
 |
TheAnswer
HV kasutaja

liitunud: 28.05.2006
|
30.12.2009 14:16:31
|
|
|
Le Inc kirjutas: |
Tabelil on veerud (column) ja read (rows)!
Mis asi see "lävend" on? Mingi X string mille järgi otsida? Tundub muidu suhteliselt lihtne liiguta -> kopeeri asi olevat.
Kopeerimine Selection.Paste kaudu on aeglane ja teeb macro veelgi aeglasemaks! Kasuta otsest "kopeerimist" Cells(k, 1) = Cells(k, 3) jne. |
Unise peaga kaks korda veerud õnnestunud kirjutada
Lävend oleks siis väärtus millest suuremad või võrdsed väärtused mind huvitavad, ehk siis mille kuupäeva oleks vaja teise tabelisse kopeerida.
Proovin seda otsest kopeerimist.
Lisasin tabelist pildi ka http://theanswer.planet.ee/Ex/tabel.png
|
|
Kommentaarid: 45 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
43 |
|
tagasi üles |
|
 |
Le Inc
HV Guru

liitunud: 06.09.2002
|
30.12.2009 16:33:40
|
|
|
Proovi kasutada:
Sub Otsi()
For k = 2 To 5000
KOOD
KOOD
KOOD
Next k
End sub |
Lase kõik read ühekaupa üle ja kontrolli vastavat veergu mingi oma aastaarvuga. Saad ju nimekirjas liikuda kui lisad ridu Cells(k+1, 2) või vähendad Cells(k-1, 2) jne. Vajadusel saad lisada alam "loop'e" samal põhimõttel. GOTO värk pole teab mis hea kasutada.
Egas see sul kooliülesanne ole!?
|
|
Kommentaarid: 56 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
54 |
|
tagasi üles |
|
 |
TheAnswer
HV kasutaja

liitunud: 28.05.2006
|
03.01.2010 18:24:28
|
|
|
Le Inc kirjutas: |
Proovi kasutada:
Sub Otsi()
For k = 2 To 5000
KOOD
KOOD
KOOD
Next k
End sub |
Lase kõik read ühekaupa üle ja kontrolli vastavat veergu mingi oma aastaarvuga. Saad ju nimekirjas liikuda kui lisad ridu Cells(k+1, 2) või vähendad Cells(k-1, 2) jne. Vajadusel saad lisada alam "loop'e" samal põhimõttel. GOTO värk pole teab mis hea kasutada.
Egas see sul kooliülesanne ole!? |
Tegemist on sademete andmetega. Mind huvitab mis päevadel on sadanud rohkem kui need väärtused mis ma igale jaamale ette olen andnud. Tegemist on mu magistritöö väikese osaga.(ei tea mis kool annaks koduseks tööks tabeli kus 20k+ veergu )
Edit2
Probleem nüüd lahendatud. Tänud Le inc, et juhatasid mind õigele teele.
vb:
|
Sub kuupäevad() For Veerg = 1 To 40 For counter = 1 To 8280 If ActiveCell >= Cells(81, 5 + Veerg) Then ActiveCell.Offset(0, -Veerg).Activate Selection.Copy Destination:=Worksheets("Suvi").Cells(counter, Veerg) ActiveCell.Offset(0, Veerg).Activate Else End If ActiveCell.Offset(1, 0).Activate Next counter ActiveCell.Offset(-8280, 1).Activate Next Veerg End Sub
|
|
|
Kommentaarid: 45 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
43 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|