동적 월간 엑셀 캘린더

동적 월간 엑셀 캘린더

연도(및 날짜)만 변경할 수 있는 월별 달력(시트당 1개월)을 만들고 싶습니다. 내 달력 템플릿이 이미 생성되었습니다. 내가 원하는 것은 연도를 변경할 때 평일에 따라 날짜를 변경하는 수식을 추가하는 것입니다. 일주일은 일요일부터 시작된다

감사해요 !

답변1

제가 생각해낸 내용은 다음과 같습니다. 자신의 템플릿에 맞게 필요에 따라 지침을 조정하십시오.


지침

  1. A1을 표시하려는 월의 연도 값으로 설정하십시오.
    • 이 게시물의 첫 번째 개정 날짜는 "2015"입니다.
  2. A2를 표시하려는 달의 전체 이름으로 설정합니다.
    • 이 게시물의 첫 번째 개정 날짜는 "5월"입니다.
  3. A3:G3에 요일을 입력합니다. A3에서는 "일요일"로 시작하고 G3에서는 "토요일"로 끝납니다.
  4. A4에 다음 수식을 입력하세요.=IF(WEEKDAY(DATEVALUE(CONCATENATE($A$2," 1, ",$A$1)))=1,1,"")
    • 월/연도에 따라 이 수식은 여기에 빈 값을 반환할 수 있습니다. (2015년 5월 기준입니다.) 이것은 정상입니다.
  5. B4에 다음 수식을 입력합니다.=IF(A4="",IF(WEEKDAY(DATEVALUE(CONCATENATE($A$2," 1, ",$A$1)))=COLUMNS($A$4:B4),1,""),A4+1)
    • 월/연도에 따라 이 수식은 여기에 빈 값을 반환할 수 있습니다. (2015년 5월 기준입니다.) 이것은 정상입니다.
  6. B4의 수식을 C4:G4 셀에 복사합니다. Excel에서는 필요에 따라 수식의 셀 참조를 자동으로 조정해야 합니다.
    • 이 시점에서 수식은 4행의 셀 중 하나에서 "1"로 평가되어야 하며 이후의 각 셀은 이전 셀보다 높은 증분을 반환해야 합니다. "1" 앞의 셀은 비어 있어야 합니다. 2015년 5월의 경우 A4:E4에 공백, F4(금요일)에 "1", G4(토요일)에 "2"가 표시됩니다..
  7. A5에 다음 수식을 입력하세요.=IF(ISERROR(DATEVALUE(CONCATENATE($A$2," ",G4+1,", ",$A$1))),"",G4+1)
    • 공식 결과는 G4 값보다 1 높아야 합니다.
  8. A5 아래 셀 A6:A9의 수식을 복사합니다. Excel에서는 필요에 따라 수식의 셀 참조를 자동으로 조정해야 합니다.
    • A6:A9는 현재 공백으로 평가됩니다. 그것은 정상입니다.
  9. B5에 다음 수식을 입력합니다.=IF(ISERROR(DATEVALUE(CONCATENATE($A$2," ",A5+1,", ",$A$1))),"",A5+1)
    • 수식 결과는 A5 값보다 1 높아야 합니다.
  10. B5의 수식을 C5:G5 셀에 복사합니다. Excel에서는 필요에 따라 수식의 셀 참조를 자동으로 조정해야 합니다.
    • 이제 5행의 수식은 A열에서 G열까지 점진적으로 증가하는 숫자 집합으로 평가되어야 합니다.
  11. B5:G5를 선택하고 해당 셀을 B6:G9까지 복사합니다. Excel에서는 필요에 따라 수식의 셀 참조를 자동으로 조정해야 합니다.
    • 이 시점에서 달력은 해당 월에 대해 적절하게 채워져야 합니다. 해당 월의 1일 이전과 해당 월의 마지막 날 이후의 셀은 비어 있어야 합니다.
    • 2015년 1월과 같은 특정 달에는 9행이 완전히 비어 있습니다. 이것은 정상입니다.

기능

  • 사슬 같이 잇다텍스트 문자열을 하나로 결합합니다.
  • 날짜값텍스트 문자열로 표시된 날짜에 대한 Excel "일련 번호" 값을 반환합니다. 문자열이 알려진 날짜 형식과 일치하지 않거나 문자열이 실제 날짜를 나타내지 않는 경우(예: "2015년 1월 32일" 또는 "2015년 2월 29일") 오류를 반환합니다.
  • 주일주어진 날짜의 요일을 나타내는 1부터 7까지의 값을 반환합니다.
  • 지정된 셀 배열에 걸쳐 있는 열 수를 반환합니다.
  • 만약에지정된 수식이 TRUE 또는 FALSE로 평가되는지 여부에 따라 선택한 값(또는 수식 결과)을 반환할 수 있습니다.
  • ISERROR주어진 수식에서 오류가 발생하면 TRUE를 반환하고 수식에서 오류가 발생하지 않으면 FALSE를 반환합니다.

공식 설명

  • A4A1과 A2의 정보를 조합하여 해당 월의 1일을 나타내는 텍스트 문자열을 생성합니다. (예: "2015년 5월 1일".) 그런 다음 해당 날짜의 평일이 일요일인지 확인합니다. 일요일이면 1을 반환하고 그렇지 않으면 공백을 반환합니다.

  • B4:G4이전 셀이 비어 있는지 확인하십시오. 그렇지 않은 경우 이전 셀보다 하나 높은 값을 반환합니다. 이전 셀이 비어 있으면 현재 평일이 해당 달의 첫 번째 날과 일치하는지 확인합니다. 일치하면 1을 반환하고, 일치하지 않으면 공백을 반환합니다.

  • A5:A9이전 행 끝의 값에 1을 더한 다음 그 결과를 A1 및 A2의 정보와 결합하여 날짜 문자열을 형성합니다. 날짜가 실제로 존재하는지 확인합니다. 해당하는 경우 날짜 숫자를 반환하고, 그렇지 않은 경우 공백을 반환합니다.

  • B5:G9이전 셀의 값에 1을 더한 다음 결과를 A1 및 A2의 정보와 결합하여 날짜 문자열을 형성합니다. 날짜가 실제로 존재하는지 확인합니다. 해당하는 경우 날짜 숫자를 반환하고, 그렇지 않은 경우 공백을 반환합니다.


스크린샷

2015년 5월의 출력 예입니다.

여기에 이미지 설명을 입력하세요

답변2

템플릿에서 생성합니다 New Workbook. Calendar sunday검색 문자열.

"달력 일요일" 검색 문자열

선택하다일 면적그리고 메뉴 Manage Rules를 누르세요 Conditional Formatting.

Excel 서식 규칙 편집 메뉴

추가하다New Rule

Excel 규칙 서식 대화 상자

규칙 추가=TODAY()

Excel에서 "=TODAY()"와 같은 형식 지정 규칙을 추가합니다.

결과:

Excel 서식 규칙 달력 결과

답변3

표시된 셀에 다음 항목을 입력합니다.

A1: 2015 B1: 첫째 날 C1: =DATEVALUE(A1&"-"&A2&"-01")
A2: 5 B2: 주-일요일 C2: =C1-WEEKDAY(C1;2)

C4: =TEXT(COLUMNS($A$4:A4);"DD")
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;"")

그런 다음 C4와 C5를 복사하여 7개의 셀 너비를 채웁니다.
그 다음에는 7행의 사본을 복사하여 총 6행을 채웁니다.
마지막 6개 행의 셀을 선택하고 CTRL+ 키를 누른 다음 1왼쪽 패널에서 사용자 정의를 클릭하고 D사용자 정의 형식에 대해 단일을 입력합니다.

결과는 다음과 같습니다:

2015 첫날 2015-05-01              
2015-04-26 5주~일요일              

일 월 화 수 목 금 토
                    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                      

이는 Excel, LibreOffice 및 기타 스프레드시트에서 작동할 가능성이 높습니다.

답변4

리눅스:

터미널을 열고 다음을 입력하세요.

ncal 2015ENTER(프롬프트에서 ) 를 누르세요 $.

출력은 다음과 같습니다.

                                  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      

... 현재 날짜가 "역방향 블록" 번호로 표시되어 있습니다. 텍스트로 복사하여 붙여넣으세요.
필요한 작업량은 사용하는 도구에 따라 다릅니다.


편집: 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

모든 스프레드시트에 로드할 수 있는 CSV 파일을 생성합니다. y=2015달력을 만들려는 연도를 반영하도록 변경합니다 .

관련 정보