Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

media ogni 24 righe

Ultimo Aggiornamento: 30/12/2016 12:43
Post: 15
Registrato il: 15/02/2009
Città: GENOVA
Età: 38
Utente Junior
excel 2010
OFFLINE
29/12/2016 16:28

ciao a tutti,

ho un foglio excel con 15 colonne e 10000 righe.. dovrei calcolare la media (solo se positiva) ogni 24 righe.. sono riuscito prendendo spunto qua e la a scrivere una macro che inserisce una riga vuota ogni 24 ma adesso dovrei trovare un sistema per farci scrivere la media dei valori.. qualche idea su come comporre la macro? grazie mille!
Post: 291
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Junior
Excel2019
OFFLINE
29/12/2016 16:37

Ciao
Sarebbe utile:
1) vedere almeno la struttura del tuo file
2) sapere come hai fatto ad inserire una riga vuota ogni 24 (si potrebbe intervenire su questa stessa macro per far fare la media)

Forse occorre il tuo file (senza dati sensibili) e magari un po' ridotto.

Ciao,
Mario
Post: 15
Registrato il: 15/02/2009
Città: GENOVA
Età: 38
Utente Junior
excel 2010
OFFLINE
29/12/2016 16:50

grazie per la risposta!

ti allego un estratto.. in pratica la macro sfrutta la prima colonna e al cambiare del giorno inserisce una riga vuota.. ho anche gia predisposto le colonne a fianco in cui si dovrebbero riportare in automatico i valori delle medie delle varie colonne!

spero cosi sia piu chiaro!
Post: 292
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Junior
Excel2019
OFFLINE
29/12/2016 19:04

Ciao
Devi tener presente che la Funzione Average di VBA si ... impappina quando trova delle celle vuote.
Provvedi tu a dichiarare le variabili.

Prova a sostituire la tua macro con la seguente (a me funziona)

Sub CreaRigaE_Media()
    Dim UR As Long, X As Long
    Application.ScreenUpdating = False
'inserimento riga al variare della data
    UR = Cells(Rows.Count, 1).End(xlUp).Row
    For X = 2 To UR
        If Cells(X, 1) <> Cells(X + 1, 1) And Cells(X, 1) <> "" Then
            Cells(X + 1, 1).EntireRow.Insert Shift:=xlDown
        End If
    Next X
'media dei valori delle colonne (dalla C alla R)
    UR = Cells(Rows.Count, 1).End(xlUp).Row
    rg1 = 2
    For X = 2 To UR
        For j = X + 1 To UR
            If Cells(j, 1) = "" Then
                rg2 = j - 1
                For k = 3 To 18
                    Cells(j, k) = Application.WorksheetFunction.Average(Cells(rg1, k), Cells(rg2, k))
                Next k
            End If
        Next j
        rg1 = rg2 + 1
    Next X
    Application.ScreenUpdating = True
End Sub


Fai sapere. Ciao,
Mario
Post: 16
Registrato il: 15/02/2009
Città: GENOVA
Età: 38
Utente Junior
excel 2010
OFFLINE
30/12/2016 09:02

ciao,
grazie mille per la risposta,

purtroppo spostando la macro sul file originale mi da un errore:

Errore di run-time '1004':

impossibile trovare la proprietà Average per la classe WhoksheetFunction

cosa può essere?
Post: 3.556
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
30/12/2016 12:09

ti da errore perché ci sono parecchi dati con la divisione per zero, puoi risolvere in questo modo
rg1 = 2
On Error Resume Next
    For X = 2 To UR
        For j = X + 1 To UR
            If Cells(j, 1) = "" Then
 
.......
[Modificato da patel45 30/12/2016 12:10]

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 17
Registrato il: 15/02/2009
Città: GENOVA
Età: 38
Utente Junior
excel 2010
OFFLINE
30/12/2016 12:43

Grazie mille per l'aiuto!
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 07:33. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com