Vamos abordar os vários ângulos desta questão separadamente:
tl; dr
=AVERAGE(INDIRECT("A2:"&ADDRESS(2,MONTH(NOW())-1)))
Por que sua fórmula não funciona?
A função AVERAGEIF
recebe argumentos de critérios, mas eles não parecem capazes de fazer nada muito complexo. Não consegui encontrar uma explicação verdadeira para a sintaxe deles, mas exemplos na documentação on-line não faça nada mais profundo que ">32"
e você está tentando usar fórmulas inteiras. Eu não vi nenhuma evidência de que a abordagem funcione, mesmo em teoria. (Eu adoraria ser mostrado errado sobre isso!) AVERAGEIF
(ou AVERAGEIFS
) não é a função que você deseja.
Média de um intervalo
A média de um intervalo de valores é fácil. Você claramente já sabe como fazer isso até mesmo para fazer a pergunta que você é! Assumindo que os valores estão em A2: L2 (cabeçalhos de mês no topo):
=AVERAGE(A2:L2)
Mas espere, você só queria mediar até e não incluir o mês atual. Então, o que precisamos é uma maneira de calcular o intervalo que vai para a fórmula média básica. Em maio, isso é A2:D2
. Como podemos calcular isso?
Fórmula para calcular um intervalo
OK, então o novo problema é como obter um intervalo (uma referência para a função AVERAGE
) do mês atual. As funções Lookup & Reference
irão ajudá-lo aqui. Pode haver uma maneira mais simples de fazer isso, mas o melhor que consegui foi usar INDIRECT
para retornar uma referência / intervalo se dermos o texto apropriado, o que é um problema mais fácil. Agora tudo o que precisamos é criar o texto "A2: D2" (para maio). A2 é bastante fácil: deve ser uma constante. Pode haver uma maneira de converter 4 (para abril, o último mês desejado) para D (a coluna desejada), mas você também pode usar a função ADDRESS
para calcular D2
dos números de linha / coluna. Note que ele pensa "para trás" do normal. Então A2 seria inserido como ADDRESS(2,1)
. E, no seu caso, você sabe a linha, 2, e pode calcular a coluna que deseja usando a função MONTH
desejada e, em seguida, subtrair 1 para voltar ao último mês. Então podemos obter 'D2' com ADDRESS(2,MONTH(NOW())-1)
. Então é só uma questão de colocar tudo junto. Combinando o A2 e o D2 é feito com um e comercial.
="A2:"&(ADDRESS(2,MONTH(NOW())-1))
Colocando tudo junto
Agora temos a representação textual da área que queremos calcular em média. A função INDIRECT
irá convertê-lo para um intervalo real que a função AVERAGE
pode usar. A função final, em seguida, calcula a média de todos juntos:
=AVERAGE(INDIRECT("A2:"&ADDRESS(2,MONTH(NOW())-1)))
Algumas notas
Se o seu alcance correto for realmente U192: AF192, substitua os 2s na fórmula por 192 e adicione 20 ao parâmetro de linha (uma vez que U é 20 linhas à direita de A).
Também estou anexando uma captura de tela de como as várias etapas intermediárias são calculadas. A fórmula final é aquela na linha 8. Também tomei o próximo passo de calcular a média dos últimos meses, não todo o ano, usando a mesma ideia na linha 12.
Observe que toda essa abordagem fará com que sua média dependa da abertura da planilha. Se você abrir próximo fevereiro, a média será de apenas dois meses, não de todo o ano de 2017. Janeiro vai sufocar por completo. Você pode querer criar uma fórmula mais inteligente para lidar com o parâmetro month.