Médias espalhadas por vários campos no Excel?

3

Eu tenho uma tabela com uma seqüência de dados.
Esses dados são usados em um gráfico.
Há buracos nesses dados que desejo preencher com números suavizados.

Pegue esta tabela, por exemplo:

No exemplo acima, existem 3 lacunas entre 93 e 68, que eu quero preencher.
A seqüência deve ir 93, 86,75, 80,5, 74,25 e, em seguida, 68.

Que tipo de fórmula eu poderia usar para calcular automaticamente os números entre eles?

Editar: as lacunas podem ser qualquer número de linhas, elas podem estar indo para cima ou para baixo.

    
por Michael Galos 13.08.2010 / 01:42

4 respostas

0

Acabei escrevendo algum código VBA, obrigado @Lance Roberts Review, Este código irá realmente percorrer cada linha e coluna procurando entradas em branco, pegando os valores superiores e inferiores e calculando assim.
O único problema é quando a primeira linha se os dados estão em branco.
As colunas são codificadas como 10 devido à preguiça.

Sub SetAverages()
   Dim lastrow As Integer, ncol As Integer, nrow As Integer
   Dim secondvalrow As Integer, blankrows As Integer
   Dim difference As Double, Increment As Double


    Range("A65535").End(xlUp).Select
    lastrow = ActiveCell.Row

    For ncol = 2 To 10
        For nrow = 2 To lastrow   'start after header row
            If Cells(nrow + 1, ncol).Value = "" Then
                secondvalrow = nrow + 1
                Do Until Cells(secondvalrow, ncol).Value <> "" Or secondvalrow = lastrow + 1
                    secondvalrow = secondvalrow + 1
                Loop

                blankrows = secondvalrow - nrow

                difference = Cells(secondvalrow, ncol).Value - Cells(nrow, ncol).Value
                Increment = difference / blankrows
                For i = nrow + 1 To secondvalrow - 1
                    Cells(i, ncol).Value = Cells(i - 1, ncol).Value + Increment
                Next i
            End If
        Next nrow
    Next ncol
End Sub
    
por 13.08.2010 / 06:02
1

Se os intervalos de tempo forem sempre igualmente espaçados , você poderá usar o recurso Preencher do Excel.

  • Selecione B2285: F2289 (o intervalo vazio mais as linhas de dados acima e abaixo)
  • Na guia da faixa de opções Início , selecione Preencher e, em seguida, Série ...
    • Séries em: Colunas
    • Tipo: Linear
    • Tendência: Sim
    • Clique em OK

Testado no Excel 2007.

    
por 13.08.2010 / 03:12
1

Com este sub VBA você pode selecionar as células que deseja interpolar, depois ativar a macro. Eu usei um botão, mas você provavelmente vai querer criar um combo de teclas de atalho.

Private Sub InterpolateGap()

Dim Gap As Range
Dim GapRows As Integer, i As Integer, Increment As Integer

Set Gap = Selection
If Not Gap Is Nothing Then
    GapRows = Gap.Rows.Count
    Increment = (Gap.Cells(1, 1).Offset(-1, 0) - _ 
                 Gap.Cells(1, 1).Offset(GapRows, 0)) / GapRows
    For i = 1 To GapRows
        Gap.Rows(i).Cells(1, 1) = _ 
        Gap.Rows(i).Cells(1, 1).Offset(-1, 0) - Increment
    Next i
End If

End Sub
    
por 13.08.2010 / 03:13
0

Vai ser difícil quando você não tem uma subida ou descida constante.

Meu melhor conselho é simplesmente destacar os números que você tem e, em seguida, clicar na caixa no canto inferior direito da área destacada e arrastar para baixo para permitir que o Excel faça o melhor trabalho ao adivinhar.

    
por 13.08.2010 / 02:39