Formatar condicionalmente por dia da semana


21

Como posso formatar condicionalmente as células nas planilhas do Google que contêm datas com um plano de fundo diferente de acordo com o dia da semana, por exemplo, realçar os sábados e domingos em uma coluna que contém os dias do mês?

Respostas:


13

Eu estava lutando com isso por um longo tempo, mas finalmente resolvi:

Use a formatação condicional na coluna com as datas e digite o seguinte como uma fórmula personalizada:

=or(WEEKDAY(A1)=1,WEEKDAY(A1)=7)

onde A1é a primeira data na coluna.

Isso aplicará a formatação condicional a todos os dias da semana com o valor 1 (domingo) e 7 (sábado).


2
Esta é uma boa solução, obrigado. Eu estou aceitando. Para meu uso eu adaptei-lo para excluir células em branco: =and(not(isblank(A1)), or(WEEKDAY(A1)=1,WEEKDAY(A1)=7))
Mike Ellis

Adição agradável com o não isblank. Eu o estava usando de uma maneira em que só o usei para o intervalo que contém as datas, por exemplo, A1: A31. Também mudei de usar> e <para = como você fez. É um pouco mais direto assim. Acho que comecei torcendo para a numeração dos dias da semana mais como no meu país, onde segunda-feira seria 1 e domingo seria 7. Não sei se é esse o caso, se a configuração do país for alterada.
aej

14

Fácil (mas um pouco tedioso!) Nas novas Planilhas Google. Para a Formatação Condicional, é necessária uma nova regra para cada cor, aproximadamente. (Geralmente, uma cor pode ser pulada das regras e aplicada com formatação normal - que seria substituída quando qualquer uma das condições do CF se aplica.) Portanto, repita o básico do seguinte pelo menos cinco vezes.

Digamos que a coluna de datas seja A. Selecione, Formatar> Formatação condicional ..., Fórmula personalizada e digite:

=weekday(A1)=1  

Escolha a formatação necessária.

A final 1acima é para domingo, outros dias seguem em ordem numérica.

Repita para os outros formatos necessários, ajustando-os 1conforme necessário.

Como essas regras não entram em conflito (cada data é apenas um dia específico da semana), a ordem na qual as regras são adicionadas (com " + Adicionar outra regra ") não importa.


4
Nesta base, uma maneira mais simples seria fazer =WEEKDAY(A1,2)>5- Este vai bater sábado e domingo e requerem apenas uma regra
FuriousGeorge

1
Isso fez o truque. Obrigado!
Joshua Dance

5

Se as datas estiverem na coluna A, selecione-as e faça: Formatar > Formatação condicional ... > Formatar células se ... > Fórmula personalizada e colocar

=and(isblank(A:A)=false, or(weekday(A:A)=1, weekday(A:A)=7))

Alguma explicação:

weekday(A:A)retorna 1-7 , para o dia da semana, e or(weekday(A:A)=1, weekday(A:A)=7)retorna true , se for domingo ( 1 ) ou sábado ( 7 ).

Isso funcionaria por si só, mas por algum motivo o dia da semana () em uma célula vazia retorna 7 , isblank(A:A)=falsetambém verifica se a célula está vazia. Agora, colorirá uma célula se estiver ao mesmo tempo (não vazia) e (sol ou sentado)

Eu também coloquei A:A, como A1daria resultados de deslocamento se o intervalo de formato não começar no topo (por exemplo, em A5:A100vez de A1:A100)

Créditos para nozes!


4

Isso é possível com um script. Vá para FerramentasEditor de scripts ... e cole neste script:

function onEdit(e) {
  var cell = e.range.getCell(1, 1);
  var val = cell.getValue();
  if ((val instanceof Date) && (val.getDay() == 0 || val.getDay() == 6)) {
    cell.setBackground("red");
  } else {
    cell.setBackground("white");
  }
}

Salve o script (dê um nome ao projeto) e volte para sua planilha.

Agora, toda vez que você edita uma célula, esse script verifica se você inseriu uma data e se a data inserida é domingo ou sábado. Nesse caso, o fundo da célula mudará para vermelho. Se não for uma data ou não for no fim de semana, o fundo mudará para branco.

Existem outros nomes de cores que você pode usar ou pode usar um código hexadecimal para especificar uma cor diferente.


Obrigado William. Embora o código pareça sensato, por algum motivo, ele não funciona exatamente como esperado. Acontece dias numerados pares em vermelho e dias ímpares em branco.
Mike Ellis

Mudei o teste na ifdeclaração para ser mais direto. Isso funciona agora?
William Jackson
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.