Prikazi cijelu temu 08.06.2015 23:31
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Lokacija:zagreb


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.