iCentar → Racunari i oprema → Softver i operativni sistemi → Ms office → vba excel dim redim preserve matrica
Posljednjih 15 postova u ovoj temi
Predmet: Re: vba excel dim redim preserve matrica
da mislio sam na preserve, pamcenje matrice te prosirivanje redova i kolona zato sam napisao ono gore da pokazem kako sam to rijesio uz pomoc transponse .
arr=transponse(arr)
da mislio sam na preserve, pamcenje matrice te prosirivanje redova i kolona zato sam napisao ono gore da pokazem kako sam to rijesio uz pomoc transponse .
arr=transponse(arr)
Predmet: Re: vba excel dim redim preserve matrica
Mozda si mislio na preserve.
ako njega koristis nemozes mijenjati sirinu matrice ili u praksi obicno kolone sto nama i netreba nego samo broj redova ili duzinu matrice.
Citat:
"kod redimenzioniranja vise dimenzionalne matrice, mozete redimenzionirati, povecati samo posljednju dimenziju matrice"
PreuzmiIzvorni kôd (Visual Basic):
- Option Explicit
- Function Matrica()
- Dim a()
- Dim I, N As Integer
- For I = 1 To 5
- For N = 1 To 5
- ReDim a(I, N)
- Next N
- Next I
- End Function
Mozda si mislio na preserve.
ako njega koristis nemozes mijenjati sirinu matrice ili u praksi obicno kolone sto nama i netreba nego samo broj redova ili duzinu matrice.
Predmet: Re: vba excel dim redim preserve matrica
uhuhuhuuu, dakle bilo problema sa ovim dok nisam otkrio ovo:
"kod redimenzioniranja vise dimenzionalne matrice, mozete redimenzionirati, povecati samo posljednju dimenziju matrice"
u praksi je to ovako:
dim matrica(10,10)
ovo mozemo
redim matrica(10,20)
ali ovo ne mozemo
redim matrica(20,10)
dakle gubitak od cirka 4 dana dok sam banalnu stvar otkrio. Sigurno ste se zabavljali dok ste razmisljali o meni i mojim mukama. heheheh

image uploading
to sam onda rijesio ovako:
ispis u immediate:
ivo(1,1)kruska
ivo(1,2)sljiva
ivo(1,3)tresnja
ivo(1,4)visnja
luka(2,1)sljiva
luka(2,2)tresnja
luka(2,3)visnja
luka(2,4)jagoda
mirko(3,1)tresnja
mirko(3,2)visnja
mirko(3,3)jagoda
mirko(3,4)lubenica
slavko(4,1)visnja
slavko(4,2)jagoda
slavko(4,3)lubenica
slavko(4,4)krumpir
uhuhuhuuu, dakle bilo problema sa ovim dok nisam otkrio ovo:
"kod redimenzioniranja vise dimenzionalne matrice, mozete redimenzionirati, povecati samo posljednju dimenziju matrice"
u praksi je to ovako:
dim matrica(10,10)
ovo mozemo
redim matrica(10,20)
ali ovo ne mozemo
redim matrica(20,10)
dakle gubitak od cirka 4 dana dok sam banalnu stvar otkrio. Sigurno ste se zabavljali dok ste razmisljali o meni i mojim mukama. heheheh

image uploading
to sam onda rijesio ovako:
PreuzmiIzvorni kôd (Visual Basic):
- Sub proba()
- Dim matrica() As Variant
- ReDim matrica(1 To 1, 1 To 1)
- Dim startDatum As Date
- Dim endDatum As Date
- startDatum = "2.1.2015."
- endDatum = "5.1.2015."
- ActiveSheet.Range("B1").Select
- ActiveSheet.Range(Selection, Selection.End(xlToRight)).Select
- Set rangDatum = Selection 'stavim red datuma u rangDatum
- Dim maxRed As Integer
- maxRed = Range("A2").End(xlDown).Row 'max broj redova dakle od A2 do A5
- Dim celija As Range
- For red = 2 To maxRed 'krece od drugod reda do maxRedova
- For Each celija In rangDatum 'koja celija u rangu datuma
- If celija >= startDatum And celija <= endDatum Then 'ima vrijednost
- If red <= 2 Then 'ako je red prvi koji uzimamo u matricu
- kolona = celija.Column - 2 'stavimo kolonu na 1 zato da stavlja u matricu od prvog mjesta
- ReDim Preserve matrica(1 To red - 1, 1 To kolona) ' redimenzioniranje, povecamo drugu za kolonu tj +1
- matrica(red - 1, kolona) = Cells(red, celija.Column) 'ubacimo u matricu(red,celija.column) celija.column=kolona celija koja ispunjava uvijet
- Else
- 'ako nije pocetak tj red 2 onda vise ne redimenzioniramo matricu
- kolona = celija.Column - 2
- matrica(red - 1, kolona) = Cells(red, celija.Column)
- End If
- End If
- Next celija
- If red < maxRed Then'ako red nije dostigao max vrijednost
- matrica = Application.Transpose(matrica)' transponse = transportiram matricu(2,8) u matrica(8,2)
- ReDim Preserve matrica(1 To kolona, 1 To red),'da bi mogao redimenzionirati posljednju dimenziju
- matrica = Application.Transpose(matrica)' transportiram nazad matrica(8,3) u matrica(3,8)
- Else
- red = red + 1 'ako je red dostigao maxRed povecavamo red na max da bi izasli iz petlje
- 'mogli smo i staviti goto
- End If
- Next red
- 'ispis matrice, a moze biti i u list ovdje je u immediate prozor
- For red = 1 To maxRed - 1
- For kolona = 1 To UBound(matrica, 1)
- Debug.Print Cells(red + 1, 1) & "(" & red & "," & kolona & ")" & matrica(red, kolona)
- Next kolona
- Next red
- End Sub
ispis u immediate:
ivo(1,1)kruska
ivo(1,2)sljiva
ivo(1,3)tresnja
ivo(1,4)visnja
luka(2,1)sljiva
luka(2,2)tresnja
luka(2,3)visnja
luka(2,4)jagoda
mirko(3,1)tresnja
mirko(3,2)visnja
mirko(3,3)jagoda
mirko(3,4)lubenica
slavko(4,1)visnja
slavko(4,2)jagoda
slavko(4,3)lubenica
slavko(4,4)krumpir
Predmet: Re: vba excel dim redim preserve matrica
tebi ubuduce samo hvala
tebi ubuduce samo hvala
Citiraj zxz:
aha znaci mogu naci po upitu "davanje +"
Pluseve treba davati radi postova jer se poslije lakse nadje.
Van teme:
a ako se divim sam sebi kako sam dobro napisao mogu li sam sebi dati + kao u filmu vlak u snijegu kada je pero glasovo sam za sebe da bude voditelj zadruge hhhh
a ako se divim sam sebi kako sam dobro napisao mogu li sam sebi dati + kao u filmu vlak u snijegu kada je pero glasovo sam za sebe da bude voditelj zadruge hhhh
Predmet: Re: vba excel dim redim preserve matrica
Hehe kod mene to ne znaci nista jer sam presao maksimum.
Pluseve treba davati radi postova jer se poslije lakse nadje.
Nazalost meni su na pocetku bubali pluseve i u zabavi.
Netreba stavljati pluseve na imena nego na post.
Hehe kod mene to ne znaci nista jer sam presao maksimum.
Pluseve treba davati radi postova jer se poslije lakse nadje.
Nazalost meni su na pocetku bubali pluseve i u zabavi.
Netreba stavljati pluseve na imena nego na post.
Predmet: Re: vba excel dim redim preserve matrica
hvala
ja ocekivo da mi Div odgovori, a njega danas nema,ehh.
dobro, kad nece nitko drugi dobro i ti dodes
to sto si napisao dva posta ne znaci da cu ti dati + +
dobices samo jedan, bilo ti krivo il milo. Recesija je druze, treba da se stedi.
hvala
ja ocekivo da mi Div odgovori, a njega danas nema,ehh.
dobro, kad nece nitko drugi dobro i ti dodes

to sto si napisao dva posta ne znaci da cu ti dati + +
dobices samo jedan, bilo ti krivo il milo. Recesija je druze, treba da se stedi.
Predmet: Re: vba excel dim redim preserve matrica
racunar uvije broji od 0.
ako dimenzionisemo:
Dim a(1) as string
Ovdje imamo dvije variable
a(0)="NekaVrijednost"
a(1)="nekavrijednost"
Cesto puta moi to nevidimo tako jer nama je obicaj brojati od 1 pa mi preskacemo var(0).
Nista se nece desiti sem sto se razbacujemo resursima pa ako je nasa app. kompleksna zauzimat ce vise memorije a nje nikad dosta i tra+eba voditi racuna.
Citat:
2.pitanje:
redovi i kolone nemoraju uvijek krenuti od 1,
nekad redovi krenu od 17, 24 ili neki drugi broj,
a kolone isto tako, a htio bi da u matricu upisuju od 1,1
dakle
racunar uvije broji od 0.
ako dimenzionisemo:
Dim a(1) as string
Ovdje imamo dvije variable
a(0)="NekaVrijednost"
a(1)="nekavrijednost"
Cesto puta moi to nevidimo tako jer nama je obicaj brojati od 1 pa mi preskacemo var(0).
Nista se nece desiti sem sto se razbacujemo resursima pa ako je nasa app. kompleksna zauzimat ce vise memorije a nje nikad dosta i tra+eba voditi racuna.
Predmet: Re: vba excel dim redim preserve matrica
Kada neznamo koliki nam je niz onda dimenzionisemo na sledeci nacin:
dim NekiNaziv() as String
e sada kada u toku izvrsenja procedure dobijemo vrijednost niiza napr. na osnovu petlje ili nceega drugoga.
Uzmimo da je ta vrijednost i.
Dim i as integer
for i= 1 to n
next i
sad ide redim
Redim NekiNaziv(i,8) as string
Nekad se nam znam desiti da uopste neznamo vrijednost niza.
Primjera radi kada niz punimo u petlji.
tada bi morali jednom obrnuti pezlju na prazno da saznamo koliko varijabli trebamo pa onovo obrnuti da pokupimo vrijednosti.
U ovom slucaju vrsimo redim za svaki prolaz petlje i najvjerovatnije i popunimo tu vrijednost.
Ukoliko izvrsimo redim sve vrijednosti ako ih ima u toj varijabli se gube.
da nebi izgubili vrijednosti ona koristimo preserve.
Primjer:
for i= 1 to N
redim preserve NekiNaziv(i,8)
NekiNaziv(i,8)="nekiPodatak"
next i
Citat:
1.pitanje:
molim objasnjenje za koristenje dim, redim i preserve
za 2D matricu.
Kada neznamo koliki nam je niz onda dimenzionisemo na sledeci nacin:
dim NekiNaziv() as String
e sada kada u toku izvrsenja procedure dobijemo vrijednost niiza napr. na osnovu petlje ili nceega drugoga.
Uzmimo da je ta vrijednost i.
Dim i as integer
for i= 1 to n
next i
sad ide redim
Redim NekiNaziv(i,8) as string
Nekad se nam znam desiti da uopste neznamo vrijednost niza.
Primjera radi kada niz punimo u petlji.
tada bi morali jednom obrnuti pezlju na prazno da saznamo koliko varijabli trebamo pa onovo obrnuti da pokupimo vrijednosti.
U ovom slucaju vrsimo redim za svaki prolaz petlje i najvjerovatnije i popunimo tu vrijednost.
Ukoliko izvrsimo redim sve vrijednosti ako ih ima u toj varijabli se gube.
da nebi izgubili vrijednosti ona koristimo preserve.
Primjer:
for i= 1 to N
redim preserve NekiNaziv(i,8)
NekiNaziv(i,8)="nekiPodatak"
next i
Predmet: vba excel dim redim preserve matrica
dimenzioniranje matrice ovisi o broju redova i broju kolona
dim matrica(redova,kolona)
mozemo na pocetku zadati max broj redova i kolona
koje sigurno nikada necemo upotrijebiti.
dim matrica(1000,1000)
redovi=127
kolone=322
for f=1 to redovi
for e=1 to redovi
matrica(f,e)=cells(f,e).value
next e
next f
problem je sto imamo praznih polja u matrici
isto tako UBound pokazuje sva polja i prazna i puna
1.pitanje:
molim objasnjenje za koristenje dim, redim i preserve
za 2D matricu.
2.pitanje:
redovi i kolone nemoraju uvijek krenuti od 1,
nekad redovi krenu od 17, 24 ili neki drugi broj,
a kolone isto tako, a htio bi da u matricu upisuju od 1,1
dakle
redovi=34
kolone = 189
for f= 15 to redovi
for e=29 to kolone
'ovo ispod nije dobro
matrica(f-(f-1),e-(e-1))=cells(f,e).value
next e
next f
dimenzioniranje matrice ovisi o broju redova i broju kolona
dim matrica(redova,kolona)
mozemo na pocetku zadati max broj redova i kolona
koje sigurno nikada necemo upotrijebiti.
dim matrica(1000,1000)
redovi=127
kolone=322
for f=1 to redovi
for e=1 to redovi
matrica(f,e)=cells(f,e).value
next e
next f
problem je sto imamo praznih polja u matrici
isto tako UBound pokazuje sva polja i prazna i puna
1.pitanje:
molim objasnjenje za koristenje dim, redim i preserve
za 2D matricu.
2.pitanje:
redovi i kolone nemoraju uvijek krenuti od 1,
nekad redovi krenu od 17, 24 ili neki drugi broj,
a kolone isto tako, a htio bi da u matricu upisuju od 1,1
dakle
redovi=34
kolone = 189
for f= 15 to redovi
for e=29 to kolone
'ovo ispod nije dobro
matrica(f-(f-1),e-(e-1))=cells(f,e).value
next e
next f
Sva vremena su GMT +01:00. Trenutno vrijeme: 6: 32 am.
Portal
iCentar
Statistike
Procitajte pravila
Donacije
Racunari i oprema
Softver i op. sistemi
Hardver i mreze
Programiranje i baze
Nauka
Tehnika
Dom i porodica
Biznis
Sport i rekreacija
Zabava
Zanimljivosti
Pretrazi
Tim
Registriraj se
Vazni alati
Prijavi se