
Quero criar um calendário mensal (1 mês por planilha) onde apenas o ano possa mudar (e assim a data). Meu modelo de calendário já está criado. Tudo que quero é adicionar uma fórmula que altere a data de acordo com o dia da semana quando eu mudar o ano. A semana começa no domingo
Obrigado !
Responder1
Aqui está o que eu descobri. Ajuste as instruções conforme necessário para se adequar ao seu próprio modelo.
Instruções
- Defina A1 para o valor do ano do mês que você deseja representar.
- Para a data da primeira revisão deste post, seria “2015”.
- Defina A2 como o nome completo do mês que você deseja representar.
- Para a data da primeira revisão deste post, seria “maio”.
- Preencha A3:G3 com os dias da semana, começando com “Domingo” em A3 e terminando com “Sábado” em G3.
- Coloque a seguinte fórmula em A4:
=IF(WEEKDAY(DATEVALUE(CONCATENATE($A$2," 1, ",$A$1)))=1,1,"")
- Dependendo do Mês/Ano, esta fórmula pode retornar um valor em branco aqui. (Será para maio de 2015.) Isso é normal.
- Coloque a seguinte fórmula em B4:
=IF(A4="",IF(WEEKDAY(DATEVALUE(CONCATENATE($A$2," 1, ",$A$1)))=COLUMNS($A$4:B4),1,""),A4+1)
- Dependendo do Mês/Ano, esta fórmula pode retornar um valor em branco aqui. (Será para maio de 2015.) Isso é normal.
- Copie a fórmula de B4 nas células C4:G4. O Excel deve ajustar automaticamente as referências de células na fórmula conforme necessário.
- Neste ponto, a fórmula deve ser avaliada como “1” em uma das células da linha 4, e cada célula posteriormente deve retornar um incremento maior que a célula anterior. As células antes do “1” devem ficar em branco. Para maio de 2015, você deverá ver espaços em branco em A4:E4, "1" em F4 (sexta-feira) e "2" em G4 (sábado).
- Coloque a seguinte fórmula em A5:
=IF(ISERROR(DATEVALUE(CONCATENATE($A$2," ",G4+1,", ",$A$1))),"",G4+1)
- O resultado da fórmula deve ser um valor superior ao valor de G4.
- Copie a fórmula em A5 para baixo nas células A6:A9. O Excel deve ajustar automaticamente as referências de células na fórmula conforme necessário.
- A6:A9 será avaliado como espaços em branco por enquanto. Isso é normal.
- Coloque a seguinte fórmula em B5:
=IF(ISERROR(DATEVALUE(CONCATENATE($A$2," ",A5+1,", ",$A$1))),"",A5+1)
- O resultado da fórmula deve ser um valor superior ao valor de A5.
- Copie a fórmula em B5 nas células C5:G5. O Excel deve ajustar automaticamente as referências de células na fórmula conforme necessário.
- As fórmulas na linha 5 devem agora ser avaliadas como um conjunto de números aumentando gradativamente da coluna A para a coluna G.
- Selecione B5:G5 e copie essas células até B6:G9. O Excel deve ajustar automaticamente as referências de células na fórmula conforme necessário.
- Neste ponto, o calendário deve ser preenchido adequadamente para o mês determinado. As células antes do primeiro dia do mês e depois do último dia do mês devem ficar em branco.
- Para determinados meses, como janeiro de 2015, a linha 9 ficará totalmente em branco. Isto é normal.
Funções
- CONCATENARune cadeias de texto.
- DATAVALORretorna um valor de "número de série" do Excel para a data representada por uma sequência de texto. Ele retornará um erro se a string não corresponder a um formato de data conhecido ou se a string não representar uma data real (por exemplo: "32 de janeiro de 2015" ou "29 de fevereiro de 2015").
- DIA DA SEMANAretorna um valor, de 1 a 7, representando o dia da semana de uma determinada data.
- COLUNASretorna o número de colunas abrangidas por uma matriz especificada de células.
- SEpermite retornar um valor escolhido (ou resultado de fórmula) com base no fato de uma fórmula especificada ser avaliada como VERDADEIRO ou FALSO.
- ÉERROretorna TRUE se a fórmula fornecida resultar em erro ou FALSE se a fórmula não gerar erro.
Explicações da fórmula
A4reúne informações de A1 e A2 para gerar uma sequência de texto representando o primeiro dia do mês. (ex: "1º de maio de 2015".) Em seguida, verifica se o dia da semana daquela data seria domingo. Retorna 1 se for domingo, em branco se não for.
B4:G4verifique a célula anterior para ver se está em branco. Caso contrário, retorna um valor um valor superior ao da célula anterior. Se a célula anterior estiver em branco, verifica se o dia da semana atual corresponde ao primeiro dia do mês determinado - retorna 1 em caso afirmativo, em branco se não.
A5: A9adicione 1 ao valor do final da linha anterior e combine o resultado com as informações de A1 e A2 para formar uma sequência de datas. Verifica se a data realmente existe. Retorna o número do dia do mês se for o caso, em branco se não for o caso.
B5:G9adicione 1 ao valor da célula anterior e combine o resultado com as informações de A1 e A2 para formar uma sequência de datas. Verifica se a data realmente existe. Retorna o número do dia do mês se for o caso, em branco se não for o caso.
Captura de tela
Exemplo de saída para maio de 2015.
Responder2
Crie New Workbook
a partir do modelo. Calendar sunday
seqüência de pesquisa.
Selecioneárea de diase pressione Manage Rules
no Conditional Formatting
menu.
AdicionarNew Rule
Adicionar regra igual=TODAY()
Resultado:
Responder3
Digite estes itens nas células indicadas:
A1: 2015 B1: Primeiro dia C1: =DATEVALUE(A1&"-"&A2&"-01") A2: 5 B2: Semana-Domingo C2: =C1-WEEKDAY(C1;2) C4: =TEXTO(COLUNAS($A$4:A4);"Ddd") C5: =SE(TEXTO($C$2-1+COLUNAS($A$4:A4)+(LINHAS($A$4:A4)-1)*7;"AAAA-MM")=TEXTO($C$1; "AAAA-MM");$C$2-1+COLUNAS($A$4:A4)+(LINHAS($A$4:A4)-1)*7;"")
Em seguida, copie C4 e C5 para preencher a largura de sete (7) células.
Seguido por uma cópia da linha 7 para preencher um total de seis (6) linhas.
Selecione as células nessas últimas 6 linhas e pressione CTRL+ 1, clique em Personalizado no painel esquerdo e insira um único D
para o formato personalizado.
O resultado ficará assim:
Primeiro dia de 2015 01/05/2015 5 Semana-Domingo 2015-04-26 Dom Seg Ter Qua Qui Sex Sáb 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Isso funcionará no Excel, LibreOffice e provavelmente em qualquer outra planilha.
Responder4
Linux:
Abra um terminal e digite:
ncal 2015
e pressione ENTER(no $
prompt).
A saída será semelhante a:
2015
January February March April
Su 4 11 18 25 1 8 15 22 1 8 15 22 29 5 12 19 26
Mo 5 12 19 26 2 9 16 23 2 9 16 23 30 6 13 20 27
Tu 6 13 20 27 3 10 17 24 3 10 17 24 31 7 14 21 28
We 7 14 21 28 4 11 18 25 4 11 18 25 1 8 15 22 29
Th 1 8 15 22 29 5 12 19 26 5 12 19 26 2 9 16 23 30
Fr 2 9 16 23 30 6 13 20 27 6 13 20 27 3 10 17 24
Sa 3 10 17 24 31 7 14 21 28 7 14 21 28 4 11 18 25
May June July August
Su 3 10 17 24 31 7 14 21 28 5 12 19 26 2 9 16 23 30
Mo 4 11 18 25 1 8 15 22 29 6 13 20 27 3 10 17 24 31
Tu 5 12 19 26 2 9 16 23 30 7 14 21 28 4 11 18 25
We 6 13 20 27 3 10 17 24 1 8 15 22 29 5 12 19 26
Th 7 14 21 28 4 11 18 25 2 9 16 23 30 6 13 20 27
Fr 1 8 15 22 29 5 12 19 26 3 10 17 24 31 7 14 21 28
Sa 2 9 16 23 30 6 13 20 27 4 11 18 25 1 8 15 22 29
September October November December
Su 6 13 20 27 4 11 18 25 1 8 15 22 29 6 13 20 27
Mo 7 14 21 28 5 12 19 26 2 9 16 23 30 7 14 21 28
Tu 1 8 15 22 29 6 13 20 27 3 10 17 24 1 8 15 22 29
We 2 9 16 23 30 7 14 21 28 4 11 18 25 2 9 16 23 30
Th 3 10 17 24 1 8 15 22 29 5 12 19 26 3 10 17 24 31
Fr 4 11 18 25 2 9 16 23 30 6 13 20 27 4 11 18 25
Sa 5 12 19 26 3 10 17 24 31 7 14 21 28 5 12 19 26
... com a data atual marcada com um número de "bloco invertido". Copie e cole como texto.
A quantidade de trabalho necessária depende da ferramenta que você usa.
editar: Digitando no prompt do shell Bash;
$ y=2015; for (( i=1 ; i<13 ; i++)) do cal $i $y ; done | sed -re 's/([^ ]+ 2015|[a-zåäö]{2}|[ 0-9]{2} )/"\1",/g' | sed -re 's/"\,[ ]*$/"/' >calendar-$y.csv
Cria um arquivo CSV que pode ser carregado em qualquer planilha. altere y=2015
para refletir o ano para o qual você deseja criar um calendário.