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 do dia atual 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 do dia atual 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

Outro exemplo: Quantidade de dias, exceto domingos, entre duas datas que estão nas colunas A1 e B1:

# Inglês
=NETWORKDAYS.INTL(A1; B1; "0000001")

# Portugues
=DIATRABALHOTOTAL.INTL(A1; B1; "0000001")
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 ené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.

Categorias
Dicas Programação

Como utilizar o Google Cloud SDK com múltiplas credenciais

Para quem utiliza o Google Cloud SDK e queira autenticar com mais de uma credencial ao mesmo tempo, você pode utilizar esses comandos para criar uma configuração para cada conta:

1. Criar uma configuração:
gcloud config configurations create [nome-da-config]

2. Ativar a configuração:
gcloud config configurations activate [nome-da-config]

3. Autenticar na conta desejada:
gcloud auth activate-service-account --key-file=[path-da-conta-de-servico.json]
ou
gcloud auth login

4. Setar o projeto padrão:
gcloud config set project [id-do-projeto]

Depois só repetir os passos de 1 a 4 para cada conta que deseja autenticar.

5. Para utilizar a configuração:
gcloud config configurations activate [nome-da-config]
ou utilize a variável de ambiente:
CLOUDSDK_ACTIVE_CONFIG_NAME="nome-da-config"

Caso esteja em uma rede fechada, antes da autenticação você pode configurar um proxy:
gcloud config set proxy/type http
gcloud config set proxy/address proxy.host.intranet # ou IP
gcloud config set proxy/port 3128

Para mais detalhes, consulte a documentação oficial: https://cloud.google.com/sdk/gcloud/reference/config/configurations

Categorias
Desenvolvimento de software Dicas

Comandos úteis para Kubernetes (kubectl)

A ideia aqui não é ser uma documentação, mas apenas servir de guia para consulta rápida de alguns comandos úteis, que eu particularmente sempre esqueço. Para quem quiser aprender mais sobre Kubernetes, melhor ir para a documentação oficial.

Abrir uma sessão do shell em uma pod

Esse comando é útil quando é preciso fazer uma análise mais detalhada da pod.
kubectl exec -it POD_NAME -- bash

Desativar um cronjob

Para desativar um cronjob sem precisar fazer um novo deploy é possível usar o comando:
kubectl patch cronjobs JOB_NAME -p '{"spec" : {"suspend" : true }}'

Descrever a pod

kubectl describe pod POD_NAME

Disparar execução de um cronjob

Caso queira disparar manualmente a execução de um cronjob, sem aguardar o agendamento:
kubectl create job --from=cronjob.batch/CRON_NAME JOB_NAME
JOB_NAME pode ser qualquer nome único

Categorias
Dicas Windows

Como rodar um programa no Windows como Administrador sem pedir senha

No Windows quando você precisa rodar um programa como Administrador usando um usuário básico, a cada execução é solicitada a senha de um usuário com privilégios de Administrador e não há a opção de não perguntar novamente.

Para evitar isso é possível criar um atalho que executa como Administrador e salva as credenciais. Para isso basta ir na Área de trabalho, clicar com o botão direito e ir em Novo > Atalho:

Na tela que abrir, digite o seguinte commando:

runas /user:NOME-DO-COMPUTADOR\node_do_usuario /savecred "cmd /c \"C:\caminho\para\programa.exe\""

Trocando o NOME-DO-COMPUTADOR\node_do_usuario pelo seu respectivo computador e nome de usuário com permissão de Administrador, além do caminho para o programa que deseja executar.

Feito isso, o atalho criado só pedirá a senha do Administrador na primeira execução e guardará as informações para as próximas.

Caso você não saiba o nome do computador ou o nome do usuário, pode abrir um Prompt de Comando (executar > cmd) e digitar o comando:

net user