Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Keskiarvon laskeminen visual basicilla

pentiny [07.07.2008 17:21:11]

#

Moro!

Kyse olisi eräästä ongelmasta VBA:ssa.

Alla oleva koodinpätkä kopio ehdon täyttämän rivin "muokattu" sheetille. Eli sarakkeessa C on lukuja 2,4,6,8,... ja kun ehto täyttyy eli solussa on luku 10 * i (i=i+1), sheetin kyseinen rivi kopioituu "muokattu" sheetille.

Alla esimerkki datasta:

   A           B       C

1  18.6.2008   19,15   2
2  18.6.2008   18,98   4
3  18.6.2008   18,65   6

Koodin pätkä toimii hyvin mutta haluaisin nyt muuttaa ehtoa. Ehtona olisi, että ohjelma laskee sarakkeen B keskiarvon C sarakkeen väleillä (i-1)*10+2 - 10*i (esim 2-10, 12-20, 22-30 jne) ja syöttää keskiarvon sheettiin "muokattu". Muutos on luultavasti helppo (käyttäen esim komentoa "average"), mutta ei nyt osu silmään.

Olisiko antaa vihjeitä?.

ps. teen melko vähän visualilla töitä, mutta sattumoisin joudun nyt käsittelemään töissä suuria excel tiedostoja. Joudun (pääsen) siis opiskelemaan VBA:ta.

Private Sub CommandButton1_Click()

  Dim taulu, solu
  Application.ScreenUpdating = False
  For Each taulu In Sheets
    If taulu.Name <> "muokattu" Then
      For Each solu In taulu.Range("C1:C" + _
      CStr(taulu.Cells.SpecialCells(xlCellTypeLastCell).Row))
        If solu.Value = 10 * i Then
          i = i + 1
          taulu.Range("A" + CStr(solu.Row) + ":DA" + _
          CStr(solu.Row)).Copy Destination:=Sheets( _
          "muokattu").Range("A" + CStr(i) + ":DA" + CStr(i))
        End If
      Next
    End If
  Next
  Application.ScreenUpdating = True


End Sub

pentiny [08.07.2008 17:20:07]

#

Nopeammin sain excelin kaavoilla ilman VBA:ta... Hieman enemmän kopiointityötä, mutta ei mahdottomia.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta