Centar za edukaciju-BiH



#1 08.06.2015 17:24
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:VBA Excel For Each Transponiraj (vodoravno u okomito) - mozgalica
dobro nije bas naslov ono sto trazim ali sam u naslov unio sve ono sto bi se moglo naci u ovoj mozgalici, bar je za mene mozgalica a za vas, neznam.

[img]
image url upload[/img]

na gornjoj slici imamo sa desne strane podatke koje moramo prema rangu datuma stavljati u lijevu stranu.
Dakle kod bi bio nesto ovako:

PreuzmiIzvorni kôd (Visual Basic):
  1. Dim rang as Range
  2. Range("F1").Select
  3. Set rang = Range(Selection, Selection.End(xlToRight))
  4. For Each celija In rng
  5.      If celija.Value >= startDatum And celija.Value <= endDatum Then
  6.          'kod koji ce:
  7.         'UVIJEK zapoceti ispisivati od celije (2,1) tj A2
  8.         ' a zapocet ce ispisivati od startDatuma do endDatuma
  9.         'u ovom slucaju izabran je luka, a njegov red mozemo odrediti sa:
  10.         ' Application.WorksheetFunction.Match("luka", Range("E:E"), 0) ili
  11.         'bi vi to odredili drugacije
  12.         'Cells(2,1)=startDatum : Cells(2,2)="luka": Cells(2,3)="jagoda"
  13.         'Cells(3,1)=startDatum + 1:Cells(3,2)="luka": Cells(3,3)="kruska"
  14.         'itd
  15.  
  16.      End If
  17. Next celija

zivot je moja domovina.
↑  ↓

#2 08.06.2015 23:20
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: VBA Excel For Each Transponiraj (vodoravno u okomito) - mozgalica
To je isto cini mi se kao i u predhodnoj temi ali i dalje nemogu dokuciti tacno sta hoces.
Mora da ovo ima smisla da ti negdje treba.
Posto po meni nisi bas detaljno opisao sta hoces pokusat cu ja opisati a ti me ispravi gdje grijesim.

napraviti proceduru koja ce imati ulazne parametre:
Pocetni datum i krajnji datum i ime.

Procedura treba da Pretrazi sve datume u koloni A2 i da nadje redove koji imaju datum u okviru pocetnog i krajnjeg datuma te da ima u koloni b u istom redu zahtijevano ime u ulaznom parametru ime.

Ako su ova dva uslova zadovoljena onda datum da prepise u sledecu slobodnu kolonu u prvi red a u drugi red prepisati artikal iz kolone c iz reda u kome je datum.

eto ti sad popravi ako nije tako
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#3 08.06.2015 23:31
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:Re: VBA Excel For Each Transponiraj (vodoravno u okomito) - mozgalica
evo rijesenja. Problem je bio sto sam zapeo za for each ko sivonja,
a ima lijepih petlji i bez te

primjer 1. jednostavna upotreba brojaca za redove
PreuzmiIzvorni kôd (Visual Basic):
  1. For brojac = 1 To 20
  2.     Set celija = Worksheets("List1").Cells(brojac, 3)
  3.     ' neki uvijet
  4.    'npr.  If celija.Value) = vrijednost Then celija.Value = vrijednost2
  5. Next Counter

primjer 2. for ... each petlja
PreuzmiIzvorni kôd (Visual Basic):
  1. For Each celija In Worksheets("List1").Range("A1:D10").Cells
  2.     If celija.Value = vrijednost Then celija.Value = vrijednost2
  3. Next

primjer 3. ako neznamo pocetak i kraj raspona onda provedemo petlju kroz aktivni raspon
PreuzmiIzvorni kôd (Visual Basic):
  1. For Each celija In ActiveCell.CurrentRegion.Cells
  2.     If c.Value = vrijednost  Then celija.Value = vrijednost2
  3. Next

tako bi za ovaj gore primjer upotrijebili petlju kroz celije u primjeru 3.

PreuzmiIzvorni kôd (Visual Basic):
  1. dim startDatum as Date
  2. dim endDatum as Date
  3. startDatum="4.1.2015."
  4. endDatum="9.1.2015."
  5. Dim rang as Range
  6. Range("F1").Select
  7. Set rang = Range(Selection, Selection.End(xlToRight))
  8. dim imeRed as integer
  9. imeRed=Application.WorksheetFunction.Match("luka", Range("E:E"), 0)
  10. dim redIspis as Integer
  11. redIspis=0
  12. dim kolonaIspis as Integer
  13. kolonaIspis=0
  14.  
  15. For red = 1 To rang.Rows.Count
  16.   For kolona = 1 To rang.Columns.Count
  17.     If rang.Cells(red, kolona).Value >= startDatum And rng.Cells(red, kolona).Value <= endDatum Then
  18.          redIspis = redIspis + 1
  19.            If kolonaIspis = 0 Then kolonaIspis = rang.Row - 1
  20.                strVar = Cells(imeRed, kolona + 2).Value
  21.                Cells(redIspis, 1) = rang.Cells(red, kolona).Value
  22.                Cells(redIspis, 2) = Cells(imeRed, kolona + 2).Value
  23.            End If
  24.    Next kolona
  25. Next red

Rijeseno, eventualno ako se netko hoce pohvaliti da ima bolji kod Smiling
uff, vec je 0:30 idem spat. buonanotte!
zivot je moja domovina.
↑  ↓

Stranice (1):1


Sva vremena su GMT +01:00. Trenutno vrijeme: 9: 48 pm.