Calendário mensal dinâmico dinâmico

2

Eu quero criar um calendário mensal (1 mês por folha), onde apenas o ano pode mudar (e assim a data). Meu modelo do calendário já está criado. Tudo que eu 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!

    
por ariane Hamelin 01.05.2015 / 17:01

4 respostas

2

Aqui está o que eu fiz. Ajuste as instruções conforme necessário para ajustar seu próprio modelo.

Instruções

  1. Defina A1 como o valor do ano do mês que você deseja representar.
    • Para a data da primeira revisão deste post, seria "2015".
  2. Defina A2 como o nome completo do mês que você deseja representar.
    • Para a data da primeira revisão deste post, seria "May".
  3. Preencha A3: G3 com os dias da semana, começando com "Domingo" em A3 e terminando com "Sábado" no G3.
  4. Coloque a seguinte fórmula em A4: =IF(WEEKDAY(DATEVALUE(CONCATENATE($A$2," 1, ",$A$1)))=1,1,"")
    • Dependendo do mês / ano, essa fórmula pode retornar um valor em branco aqui. (Será para maio de 2015.) Isso é normal.
  5. 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, essa fórmula pode retornar um valor em branco aqui. (Será para maio de 2015.) Isso é normal.
  6. Copie a fórmula de B4 pelas células C4: G4. O Excel deve ajustar automaticamente as referências de célula 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 depois deve retornar um incremento maior que a célula anterior. Células antes do "1" devem estar em branco. Para maio de 2015, você deve ver espaços em branco em A4: E4, "1" em F4 (sexta-feira) e "2" em G4 (sábado) .
  7. 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 superior ao valor de G4.
  8. Copie a fórmula em A5 nas células A6: A9. O Excel deve ajustar automaticamente as referências de célula na fórmula conforme necessário.
    • A6: A9 será avaliado para espaços em branco por enquanto. Isso é normal.
  9. 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 maior que o valor de A5.
  10. Copie a fórmula em B5 pelas células C5: G5. O Excel deve ajustar automaticamente as referências de célula na fórmula, conforme necessário.
    • As fórmulas na linha 5 agora devem ser avaliadas para um conjunto de números aumentando de forma incremental da coluna A para a coluna G.
  11. Selecione B5: G5 e copie essas células por B6: G9. O Excel deve ajustar automaticamente as referências de célula na fórmula, conforme necessário.
    • Neste ponto, o calendário deve ser adequadamente preenchido para o mês especificado. As células antes do primeiro dia do mês e após o último dia do mês devem estar em branco.
    • Para determinados meses, como janeiro de 2015, a linha 9 ficará totalmente em branco. Isso é normal.

Funções

  • O CONCATENATE une as strings de texto.
  • DATEVALUE retorna um valor "número de série" do Excel para a data representada por uma cadeia 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").
  • WEEKDAY retorna um valor de 1 a 7, representando o dia da semana de uma determinada data.
  • COLUMNS retorna o número de colunas abrangidas por uma matriz especificada de células.
  • SE permite retornar um valor escolhido (ou resultado da fórmula) com base no fato de uma fórmula específica ser avaliada como VERDADEIRO ou FALSO.
  • ISERROR retorna TRUE se a fórmula fornecida resultar em um erro ou FALSE se a fórmula não gerar um erro.

Explicações da fórmula

  • A4 reúne informações de A1 e A2 para gerar uma cadeia de texto que representa o primeiro dia do mês. (por exemplo: "1 de maio de 2015".) Em seguida, ele verifica se o dia da semana dessa data seria o domingo. Retorna 1 se for um domingo, em branco, se não.

  • B4: G4 verifique a célula anterior para ver se está em branco. Caso contrário, retorna um valor maior que a célula anterior. Se a célula anterior estiver em branco, verificará se o dia da semana atual corresponde ao primeiro dia do mês especificado - retorna 1 em caso afirmativo, em branco, se não.

  • A5: A9 adiciona 1 ao valor do final da linha precedente e, em seguida, combina o resultado com informações de A1 e A2 para formar uma cadeia de data. Verifica se a data realmente existe. Retorna o número do dia do mês, em caso afirmativo, em branco, se não.

  • B5: G9 adicione 1 ao valor da célula anterior e combine o resultado com as informações de A1 e A2 para formar uma string de data. Verifica se a data realmente existe. Retorna o número do dia do mês, em caso afirmativo, em branco, se não.

Screenshot

Exemplo de saída para maio de 2015.

    
por 01.05.2015 / 18:56
0

Crie New Workbook do modelo. Calendar sunday string de pesquisa.

"Cadeia de pesquisa do" Domingo de Calendário "> </p>

<p> Selecione a <b> área de dias </b> e pressione  <code>Manage Rules</code>   no menu  <code>Conditional Formatting</code>  . </p>

<p> <img src="https://i.stack.imgur.com/u7HDz.jpg"></p><p>Adicione<code>NewRule</code></p><p><imgsrc="https://i.stack.imgur.com/TifC8.jpg"> </p>

<p> Adicione regra igual a  <code>=TODAY()</code>   </p>

<p> <img src="https://pt.stack.imgur.com/Qld80.jpg"alt=

Resultado:

    
por 01.05.2015 / 18:41
0

Digite esses itens nas células indicadas:

A1: 2015    B1: First day       C1: =DATEVALUE(A1&"-"&A2&"-01")
A2: 5       B2: Week-Sunday     C2: =C1-WEEKDAY(C1;2)

C4: =TEXT(COLUMNS($A$4:A4);"Ddd")
C5: =IF(TEXT($C$2-1+COLUMNS($A$4:A4)+(ROWS($A$4:A4)-1)*7;"YYYY-MM")=TEXT($C$1;"YYYY-MM");$C$2-1+COLUMNS($A$4:A4)+(ROWS($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 Personalizar no painel esquerdo e insira um único D para o formato personalizado.

O resultado será assim:

2015    First day   2015-05-01              
5       Week-Sunday 2015-04-26              

Sun Mon Tue Wed Thu Fri Sat
                    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, no LibreOffice e, provavelmente, em qualquer outra planilha.

    
por 04.05.2015 / 19:13
-1

Linux:

Abra um terminal e digite:

ncal 2015 e pressione ENTER (no prompt $ ).

A saída será parecida com:

                                  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 "bloco invertido". Copie e cole como texto.
A quantidade de trabalho necessária depende da ferramenta que você usa.

edit: 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} )/"",/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.

    
por 01.05.2015 / 22:53