Modificación de macro para operatividad desde otra hoja

Para Dante Amor.

Me enviastes macro que calculaba promedio y desviación standard a partir de los datos dados en una columna. Mi problema estriba en que los datos proceden de otra hoja (digamos que por ej. La celda "J3" de la hoja2 proviene de la hoja1 "j3") y solo se ejecuta cuando introduzco los datos manualmente. ¿Podrías añadir las líneas de código que son necesarias para que opere automáticamente? Es que como te digo ahora solo se ejecuta cuando se dan cambios en las celdas de forma manual.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("J:J")) Is Nothing Then
For Each n In Range("J14:J" & Range("J" & Rows.Count).End(xlUp).Row)
If n > 0 Then
suma = suma + n
cuen = cuen + 1
cuad = cuad + n ^ 2
End If
Next
If cuen > 0 Then
prom = suma / cuen
[M15] = prom
[N15] = Sqr((cuad / cuen) - (prom ^ 2))
Else
[M15] = 0
[N15] = 0
End If
End If
End Sub

1 respuesta

Respuesta
1

Vamos a cambiar el evento de la hoja.

Borra la macro y pon en su lugar la siguiente macro en los eventos de tu hoja:

Private Sub Worksheet_Calculate()
'Por.Dante Amor
    'Funcion: Desviación Estándar Población Total
    For Each n In Range("W3:W" & Range("W" & Rows.Count).End(xlUp).Row)
        If n > 0 Then
            suma = suma + n
            cuen = cuen + 1
            cuad = cuad + n ^ 2
        End If
    Next
    If cuen > 0 Then
        prom = suma / cuen
        [AD14] = prom
        [AE14] = Sqr((cuad / cuen) - (prom ^ 2))
    Else
        [AD14] = 0
        [AE14] = 0
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas