Categorias
Excel

Contar número de sábados ou domingos em um mês com Excel

Recentemente precisei contabilizar a quantidade de sábados e domingos que existem da data atual até o final do mês. Encontrei diversas formas de fazer isso, aqui vou trazer a que achei mais prática

Função DIATRABALHOTOTAL.INTL

O método consiste em usar a função NETWORKDAYS.INTL (DIATRABALHOTOTAL.INTL em português). Esta função calcula quantos dias úteis existem entre duas datas e recebe três parâmetros:

  • Data Inicial
  • Data Final
  • Fim de semana: Regra do que é dia útil e o que é final de semana. Se não for passado, ele considera sábado e domingo como final de semana, mas permite ser customizado para contar só sábado ou só domingo, ou qualquer combinação de dias. Existem alguns valores pré-definidos para esse parâmetro, mas ele também suporta uma texto com 7 números 1 ou 0, indicando se é considerado um dia útil ou não. O primeiro número representa segunda-feira, o segundo terça-feira e assim por diante. Exemplo: 1111100, indica que sábado e domingo são considerados fim de semana:

Exemplo de uso para retornar quantos dias úteis faltam para o final do mês:

# Inglês
=NETWORKDAYS.INTL(TODAY(); EOMONTH(TODAY();0))

# Portugues
=DIATRABALHOTOTAL.INTL(HOJE(); FIMMÊS(HOJE();0))

Agora a alteração para contar quantos sábados e domingos faltam para o final do mês:

# Inglês
=NETWORKDAYS.INTL(TODAY(); EOMONTH(TODAY();0); "1111100")

# Portugues
=DIATRABALHOTOTAL.INTL(HOJE(); FIMMÊS(HOJE();0); "1111100")

Para contar outros dias, basta adaptar o último parâmetro para o dia desejado. Exemplos:

  • 0111111: Contará as segundas-feira que faltam para o final do mês
  • 1011111: Contará as terças
  • 1110011: Contará quantas quintas e sextas faltam
  • Etc
Categorias
Excel

Encontrar a penúltima ocorrência de um determinado valor no Excel

Já fiz dois posts ensinando como encontrar a última e a n-ésima ocorrência de um valor no Excel, agora trago uma variação desse última para conseguir obter o penúltimo valor.

A abordagem é bem semelhante ao de encontrar a n-ésima ocorrencia, a diferença fica no uso da função LARGE (MAIOR em português) ao invés da SMALL (MENOR). Seguindo o mesmo exemplo, suponha que você tenha uma tabela com os dados:

Neste caso, se eu procurar por “Caneta”, gostaria de obter o valor “R$ 4,00”. A função é a seguinte:

=INDEX(B2:B10;LARGE(IF("Caneta"=A2:A10;ROW(A2:A10)-ROW(A2)+1);2))

Aplique com CONTROL+SHIFT+ENTER.

O que determina qual ocorrência será retornada é o segundo parâmetro da função LARGE, nesse caso o número 2 para indicar que queremos o penúltimo. Para pegar a última ocorrência bastaria trocar ele para 1, a antepenúltima para 3 e assim por diante.