Fórmula para calcular o quinto [dia da semana] quando aplicável

0

Eu usei a seguinte fórmula para obter o xday do mês:

=DATE(B2,A2,1+7*n)-WEEKDAY(DATE(B2,A2,8-xday))

onde o ano está em B2 e mês (como um número de 1 a 12) está em A2, e onde xday é um número que representa o dia da semana (1 = domingo a 7 = sábado), então para 1º sábado que se torna:

=DATE(B2,A2,1+7*1)-WEEKDAY(DATE(B2,A2,8-7))

Agora, isso funciona por meses com 4 semanas. Como posso modificar esta fórmula para calcular quando um mês tem 5 semanas?

    
por Leila 10.10.2012 / 15:56

2 respostas

1

Como uma solução rápida e feia, você poderia dizer

=IF(MONTH(DATE($B$2,$A$2,1+7*n)-WEEKDAY(DATE($B$2,$A$2,8-xday))) = $A$2,
          DATE($B$2,$A$2,1+7*n)-WEEKDAY(DATE($B$2,$A$2,8-xday)),
          "Non-existent date")

Ou seja, se a data calculada pela sua fórmula estiver no mês correto, use-a. Se você tiver transbordado na primeira semana do mês seguinte, não o use.

    
por 10.10.2012 / 19:19
0

Tente esta fórmula

=(B2&"-"&A2&"-"&1+7*n-WEEKDAY(DATE(B2,A2,8-xday)))+0

Isso faz o mesmo que o original, exceto que ele cria a data como uma string de texto, por exemplo, para a 5ª terça-feira de outubro de 2012, criaremos esta sequência de texto

2012-10-30

.... então o +0 no final compensa essa string para uma data, 30-Oct-2012. Mas se não houver um quinto xday, a string criada não é uma data válida, por ex. para o 5º sábado de outubro você teria 2012-10-34. Claramente, essa não é uma data válida, então, quando você adiciona zero, a coerção não funciona e você recebe #VALUE! erro. Se preferir uma mensagem de texto, basta usar o IFERROR, algo como isto

=IFERROR((B2&"-"&A2&"-"&1+7*n-WEEKDAY(DATE(B2,A2,8-xday)))+0,"No 5th day")

    
por 11.10.2012 / 12:16