segunda-feira, 17 de maio de 2010

Desvio padrão em VBA

Escrito no Excel, mas facilmente adaptável aos outros aplicativos do Office.

;-)


Option Explicit

' variáveis para cálculo do desvio padrão
'========================================
Dim valores() As Double
Dim desvio_padrao As Double
Dim qtd_valores As Integer
Dim soma As Double
Dim soma_1 As Double
Dim i As Integer
Dim media As Double
'========================================

'Cálculo de desvio padrão
'Exemplo para valores na coluna A a partir de A1
'Os valores devem estar em células contíguas
'Resultado em B1


Sub calcular()

qtd_valores = Range("A1").CurrentRegion.Rows.Count
ReDim valores(qtd_valores)

For i = 1 To qtd_valores
valores(i) = Sheets("plan1").Cells(i, 1)
Next i

desvio_padrao = f_desvio_padrao(qtd_valores, valores)
Sheets("plan1").Cells(1, 4) = "Desvio Padrão = " & desvio_padrao

End Sub

Function f_media(ByVal x As Long, valores() As Double)

soma = 0
For i = 1 To x
soma = soma + valores(i)
Next i

f_media = soma / x

End Function

Function f_desvio_padrao(ByVal qtd_valores As Integer, valores() As Double)

soma_1 = 0
media = f_media(qtd_valores, valores)
For i = 1 To qtd_valores
soma_1 = soma_1 + (valores(i) - media) ^ 2
Next i

f_desvio_padrao = Sqr(soma_1 / (qtd_valores - 1))

End Function


Um comentário:

Anônimo disse...

mais fácil mandar o excel selecionar o range e depois mandar
Application.WorksheetFunction.StDev(Selection)

Pesquisar este blog

Arquivo do blog

Quem sou eu

Minha foto
Administrador de Empresas/Técnico em Processamento de Dados. Microsoft Office User Specialist - Excel Proficient. Pós-graduado em Business Intelligence.