Notifications
Clear all

Problema Escala de trabalho

5 Posts
2 Usuários
0 Reactions
1,163 Visualizações
(@msalles)
Posts: 7
Active Member
Topic starter
 

Boa tarde. Estou com um problema em uma planilha que estou montando, a regra é a seguinte, dentro do mês o funcionário precisa ter pelo menos uma folga a cada 7 dias. Preciso de alguma coisa que me evidencie quando isso não ocorrer. Segue anexo um modelo.
Obrigado

Murilo Maturana

Murilo Salles Maturana

 
Postado : 05/08/2015 2:41 pm
Issamu
(@issamu)
Posts: 605
Honorable Member
 

Segue novo arquivo com adição dos outros valores de legenda. Antes tinha deixado restrito apenas a letra F.
E estou assumindo o máximo de 7 folgas no mês. Se houver possibilidade de mais folgas que isso, será necessário ajustas a planilha.

Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/

 
Postado : 06/08/2015 5:21 am
(@msalles)
Posts: 7
Active Member
Topic starter
 

Issamu, perfeita a sua solução, muito legal a utilização da matricial. Se possível você poderia me explicar a lógica da formatação condicional. Vi que você utilizou o nome format_cond, mas não consegui entender muito bem a fórmula que você utilizou.

Mas muito obrigado mesmo pela solução.

Att.

Murilo Maturana

Murilo Salles Maturana

 
Postado : 06/08/2015 7:42 am
Issamu
(@issamu)
Posts: 605
Honorable Member
 

Uma explicação resumida:

1º) A primeira tabela auxiliar "folga" serve para trazer o número da coluna onde aparece "F" (Ex: A = 1, B = 2 , C = 3, D = 4, ...). Isso é feito com uma fórmula matricial relativamente simples.

2º) A segunda tabela "Tamanho do intervalo" vai determinar a quantidade de células entre os "F". Fórmula muito simples, que dispensa explicação.

3º) A terceira tabela "Endereço" me gera o intervalo referente as os espaçamentos entre "F" que extrapolarem o parâmetro definido na célula AO4.
Veja:
=SE(E(AS9>$AO$4;AS9<>"");ENDEREÇO(LIN();AK9)&":"&ENDEREÇO(LIN();AL9);"") onde:

E(AS9>$AO$4;AS9<>"") é o teste lógico para saber se o tamanho é maior que o paramêtro (AO4) e se existe o intervalo entre "F" (AS9<>"")
ENDEREÇO(LIN();AK9) gera o endereço da primeira célula com F, onde lin() traz a linha atual e AK é o índice da coluna. Com estes dois argumentos a função ENDEREÇO retorna o endereço da célula.
&":"& é para concatenar os dois pontos com o endereço de célula do próximo "F" e então gerar um endereço de intervalo completo (ex: $T$9:$Y:9).

4º) Selecionei a célula E9 para criar o nome “format_cond” no gerenciador de nomes. É importante selecionar a célula E9, pois a fórmula referente ao nome vai ser colocada de forma relativa e não absoluta. A fórmula abaixo está fazendo referência a célula E9, e como está relativa, o resultado do nome definido Format_cond vai ser diferente conforme a célula a ser aplicada.

=OU(NÃO(ÉERROS(INDIRETO(Plan1!$BA9) Plan1!E9));NÃO(ÉERROS(INDIRETO(Plan1!$BB9) Plan1!E9));NÃO(ÉERROS(INDIRETO(Plan1!$BC9) Plan1!E9));NÃO(ÉERROS(INDIRETO(Plan1!$BD9) Plan1!E9));NÃO(ÉERROS(INDIRETO(Plan1!$BE9) Plan1!E9));NÃO(ÉERROS(INDIRETO(Plan1!$BF9) Plan1!E9));NÃO(ÉERROS(INDIRETO(Plan1!$BG9) Plan1!E9)))

É preciso entender somente um parte da fórmula, pois o resto é repetição mudando apenas o intervalo de análise. Toda a fórmula está envolvida com a função OU, ou seja, se um dos 7 testes der VERDADEIRO, o resultado será verdadeiro. Veja:

NÃO(ÉERROS(INDIRETO(Plan1!$BA9) Plan1!E9)) => o que estou fazendo aqui é trabalhar com um recurso de intersecção do Excel, que é realizado pelo espaçamento entre dois intervalos. A função INDIRETO tem a responsabilidade de transformar o texto com o intervalo que geramos lá na tabela 3 em um argumento de intervalo real do Excel, pois se tiver somente o endereço da célula o Excel interpretará o valor da célula como um texto somente. O teste lógico que quero fazer é o ÉERROS, que me retornará VERDADEIRO ou FALSO. Vamos supor que na célula Plan1$BA9 tenho o endereço $T$9:$Y$9, assim a fórmula resulta em ÉERROS($T$9:$Y$9 Plan1!E9) que poderíamos ler mais ou menos assim: “se a célula E9 está dentro do intervalo T9:Y9 então retorne FALSO, se não retorne VERDADEIRO.” Na formatação condicional, a formatação é aplicada para VERDADEIRO, e como o resultado do teste lógico para a célula que está dentro é FALSO, eu tenho que colocar a função NÃO para realizar a inversão desse valor para VERDADEIRO, ou seja, transformar FALSO em VERDADEIRO e VERDADEIRO em FALSO.

A necessidade de criar essa fórmula no gerenciador de nomes é porque na fórmula personalizada na formatação condicional não aceita este recurso de intersecção (“espaçamento”), porém se jogar como fórmula um nome criado no gerenciador de nomes ele aceita (Vai entender....)...

5º) A última etapa é selecionar o intervalo E9:AI31 e aplicar a formatação condicional utilizando o nome “Format_Cond” na regra de formatação.

Falei que era meio complexo... nem sei se vai dar para entender. Acho o tópico legal, com tempo vou tentar criar um vídeo no meu blog Excelmaniacos.com para tentar explicar melhor essa fórmula.

Lembrando que este é um método que criei... muito provável que existam muitos outros métodos para fazer isso, talvez até mais simples.

Abraços!

Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/

 
Postado : 06/08/2015 1:18 pm
(@msalles)
Posts: 7
Active Member
Topic starter
 

Obrigado Rafael, a planilha aqui já está em produção. Muito obrigado pela explicação.

Abços

Murilo Salles Maturana

 
Postado : 13/10/2015 8:16 am