Notifications
Clear all

Média de Coluna, considerar 5 últimos lançamentos > 0

11 Posts
4 Usuários
0 Reactions
2,244 Visualizações
(@lincolnlc)
Posts: 8
Active Member
Topic starter
 

Boa tarde!

Em anexo segue a planilha em que preciso desta fórmula.

Preciso encontrar a média dos valores no intervalo F15:F318 respeitando as seguintes considerações.

A média deve considerar somente os valores maiores que 0(zero) e somente os últimos valores lançados maiores que 0(zero)

Se alguém puder me ajudar, agradeço!

 
Postado : 13/09/2017 10:12 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde LincolnLC

Para facilitar a tua participação no fórum, sugiro tomar conhecimento do conteúdo dos links abaixo:
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

Não deixe de acessar, pois percebi que você não não sabe usar a ferramenta para agradecer (pontuar) os colaboradores e também não respeitou a regra do fórum, no tocante, que só é permitido anexar arquivos compactados (Zipados)

[]s
Patropi - Moderador

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/09/2017 11:28 am
Estevaoba
(@estevaoba)
Posts: 0
Eminent Member
 

Boa tarde, LincolnLC.

Tente esta fórmula:

=MÉDIA(DESLOC($F$14;CONT.SE($F$14:$F$308;">0")-4;;5;1))

Good luck!

 
Postado : 13/09/2017 11:55 am
(@lincolnlc)
Posts: 8
Active Member
Topic starter
 

Patropi

Peço desculpas pelo vacilo, ainda novo nas participações. Irei seguir as regras, agradeço o retorno desde já!
Abraços

 
Postado : 13/09/2017 5:28 pm
(@lincolnlc)
Posts: 8
Active Member
Topic starter
 

Estevao, boa noite!

Sua fórmula já foi de grande ajuda, porém será que consigo adapta-la para ignorar todos os valores "zerados" da coluna?

Por exemplo:


Na coluna B temos:
8
5
6
3
0
3
0
2
0
0(ainda não calculado)
0(ainda não calculado)
0(ainda não calculado)

No caso, quero encontrar a média entre os último 5 valores lançados maiores que 0, que seriam (2,3,3,6,5) resultado = 3,8

Muito obrigado, novamente!

 
Postado : 13/09/2017 6:45 pm
gfranco
(@wzxnet7)
Posts: 653
Honorable Member
 

Bom dia.
Veja se o anexo lhe ajuda.

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 14/09/2017 7:28 am
(@lincolnlc)
Posts: 8
Active Member
Topic starter
 

wzxnet7

Nossa, muito obrigado!

O Calculo que preciso é exatamente este, porém o firewall da rede da empresa barrou alguma coisa da macro, e só consigo visualizar a planilha. Pode me instruir como montar a UDF em questão? Pois assim consigo validar com o pessoal da TI para não ter problemas.

Abraços, e muito obrigado pela ajuda!

 
Postado : 14/09/2017 8:28 am
gfranco
(@wzxnet7)
Posts: 653
Honorable Member
 

Bom dia.
Primeiro salve uma cópia de sua planilha (usando o "salvar como") no formato XLSM (planilha habilitada para macro)
Feito isso vá no editor do VBA (ALT + F11)
Estando no editor do vb, na parte superior clique em inserir e escolha a opção "módulo". Isso vai inserir um módulo em branco.
Cole o código abaixo no módulo.
Pronto, a UDF estará disponível na sua planilha.

Public Function MédiaMóvel(faixa As Range, Optional quantidade As Long = 5) As Double
Dim matriz() As Variant
Dim matrizSemzeros() As Variant
Dim tamanho As Long
tamanho = 0
Dim matrizMedia() As Variant
Dim mediafinal As Double
mediafinal = 0
Dim wkf As WorksheetFunction
Set wkf = Application.WorksheetFunction

'UDF criada em 14/9/2017 para atender pedido no fórum Planilhando
'Objetivo: calcular a média dos ultimos  lançamentos desconsiderando os valores de zero
'Coloquei um argumento opcional para o usuário poder informar quantos ultimos lançamentos deseja obter a média _
e, se não preenchido esse argumento a função analizará os ultimos 5 lançamentos diferentes de zero que foi o pedido _
feito no tópico.

matriz = faixa.Value

For a = LBound(matriz()) To UBound(matriz())


If IsNumeric(matriz(a, 1)) Then
If matriz(a, 1) > 0 Then
tamanho = tamanho + 1
ReDim Preserve matrizSemzeros(1 To tamanho)

matrizSemzeros(tamanho) = matriz(a, 1)

End If

End If


Next a

ReDim matrizMedia(1 To quantidade)
Dim posicao As Long
posicao = 0


For n = UBound(matrizSemzeros()) To UBound(matrizSemzeros()) - quantidade + 1 Step -1
posicao = posicao + 1
matrizMedia(posicao) = wkf.Round(matrizSemzeros(n), 2)



Next n



mediafinal = wkf.Average(matrizMedia)

MédiaMóvel = mediafinal
End Function

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 14/09/2017 8:52 am
(@lincolnlc)
Posts: 8
Active Member
Topic starter
 

Wzxnet, muito obrigado novamente, como eu disse, o calculo era exatamente o que você conseguiu fazer.

Porém agora já em fase de testes aqui, nos deparamos com uma limitação do excel, a planilha é sempre alimentada por excel em Smartphones, e o aplicativo para os aparelhos móveis não suportam macros.

Assim, bem na hora que seria necessário a visualização dos dados, não tem como...

Será que é possível por fórmula direta? Pense até se for o caso, mudar a estrutura da planilha para facilitar.

Agradeço novamente pela atenção, que já foi de muita ajuda!

Abraços.

 
Postado : 14/09/2017 6:51 pm
gfranco
(@wzxnet7)
Posts: 653
Honorable Member
 

Bom dia.
Veja se o anexo (com função matricial) lhe atende.

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 15/09/2017 2:17 am
(@lincolnlc)
Posts: 8
Active Member
Topic starter
 

Wzxnet!

Muito obrigado! Agora deu certo nos dispositivos móveis também!

Muito obrigado mesmo!

 
Postado : 17/09/2017 9:01 pm