Calcular a Média das Linhas e das Colunas a Partir da Célula Activa em VBA\Excel
Posted by admin on 26 de Dezembro de 2011 | Filed under Exercícios, Línguagens de Programação, Programação
Continuando com a resolução dos meus primeiros exercícios em Vba aqui fica mais um:
Elabore um algoritmo que permita Calcular a Média das Linhas e das Colunas a Partir da Célula Activa.
Aqui fica o código que resolve o exercício:
Sub MatrixAverageRC() Dim InitialCell As Range Dim c() As Double Dim AverageColumn() As Double, AverageRow() As Double Dim s As Double Dim nColumns As Integer, nRows As Integer Dim i As Integer, j As Integer Set InitialCell = ActiveCell ' Calcular o número de linhas nRows = 0 Do nRows = nRows + 1 Loop Until IsEmpty(InitialCell.Offset(nRows, 0)) ' Calcular o número de colunas nColumns = 0 Do nColumns = nColumns + 1 Loop Until IsEmpty(InitialCell.Offset(0, nColumns)) ' redimensionar os vectores e as matrizes ReDim c(1 To nRows, 1 To nColumns) ReDim AverageColumn(1 To nColumns) ReDim AverageRow(1 To nRows) ' guardar valores das células na matriz c() For j = 1 To nRows ' linha For i = 1 To nColumns ' coluna c(j, i) = InitialCell.Offset(j - 1, i - 1).Value Next i Next j ' calcula a média das linhas For j = 1 To nRows ' linhas s = 0 For i = 1 To nColumns ' colunas s = s + c(j, i) Next i AverageRow(j) = s / nColumns ' calcula a média e guarda ' Apresenta a média numa célula ActiveCell.Offset(j - 1, nColumns).Value = AverageRow(j) ActiveCell.Offset(j - 1, nColumns).Font.Bold = True Next j ' calcula a média das colunas For i = 1 To nColumns ' colunas s = 0 For j = 1 To nRows ' linhas s = s + c(j, i) Next j AverageColumn(i) = s / nRows ' calcula a média e guarda ' Apresenta a média numa célula abaixo ActiveCell.Offset(nRows, i - 1).Value = AverageColumn(i) ActiveCell.Offset(nRows, i - 1).Font.Bold = True Next i End Sub
Não sei se a forma como implementei a resolução do exercício é a mais correcta, e por isso fico à espera de comentários, ou mesmo de correcções e dicas de melhoramento do código que apresento.
Share