• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Gemiddelde berekenen van een kolom in een Listobkect

Status
Niet open voor verdere reacties.

Symphysodon

Gebruiker
Lid geworden
14 dec 2012
Berichten
468
Beste forummers,

Hoe kun je van een kolom in een listobject met tabelkop het gemiddelde berekenen in vba?
Dit werkt bijvoorbeeld niet:
Code:
Sub gem()
Set oSh = ActiveSheet.ListObjects("Tabel1")
r = oSh.WorksheetFunction.Average(Columns(4))
End Sub

mvg
Marco
 
Code:
MsgBox Application.Average(ListObjects(1).DataBodyRange.Columns(4))
 
O ja dat was hem.
Ik krijg wel een foutmelding: sub of function niet gedefinieerd.
Code:
s = ActiveSheet.ListObjects("Tabel1").DataBodyRange.Columns(4)
r = Application.Average(s)

Bedankt.
 
set s= .... ?
 
Waarom niet in het tabelontwerp ?

Code:
Sub M_snb()
    Sheet1.ListObjects(1).ListColumns(4).TotalsCalculation = 2
    y = Sheet1.ListObjects(1).ListColumns(4).Total.Value
End Sub
 
Dat werkt ook, bedankt.

De volgende stap is dat de getallen in die kolom getoetst worden aan twee waarden uit een andere kolom van dezelfde rij.
Code:
Set oSh = ActiveSheet.ListObjects("Tabel1")

 
s1 = ActiveSheet.ListObjects("Tabel1").DataBodyRange.Columns(4)
meetArray = oSh.DataBodyRange

For i = LBound(s1) To UBound(s1)
    If meetArray(i, 4) < meetArray(i, 13) Then meetArray(i, 5) = meetArray(i, 4)
    If meetArray(i, 4) > meetArray(i, 7) Then meetArray(i, 6) = meetArray(i, 4)
Next
De code doorloopt de loop wel maar geeft de waarde niet terug in de sheet
 
Ik ben erachter: De resultaatcel moet niet zijn: meetArray(i,6) maar Cells(i+1,6) zo ook met de andere regel.
 
Waarom dan niet:

Code:
Sub M_snb()
    with Sheet1.ListObjects(1)
       y=.ListColumns(4).Total.Value
       if y > .ListColumns(5).Total.Value and y < .ListColumns(6).Total.Value
    end with
End Sub
 
Laatst bewerkt:
Zo kan het ook:

Code:
Sub M_snb()
  sn = Sheet1.ListObjects(1).TotalsRowRange
  if sn(1,4) > sn(1,5) and sn(1,4) < sn(1,6) then Msgbox "klopt"
End Sub
 
Wat ik bedacht had is dat als de getoetste waarden in kolom 4 voldoen aan de gestelde voorwaarde, dit weer te geven als een rood markeringspunt in een grafiek waarvan de y-waarden in kolom 4 staan In eerste instantie dacht ik het zonder vba te kunnen doen en had daarom 2 extra kolommen gebruikt (5 en 6) om de uitbijters in te zetten en die als extra serie toe te voegen in de grafiek met alleen de uitbijter(s) als rood markeringspunt zichtbaar.
 
Mijn vraag is opgelost, post#11 kan waarschijnlijk niet efficiënt zonder hulpkolom.

Bedankt voor de oplossingen.

mvg
Marco
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan