今年将至, 突然多了好多关于Excel Calendar的 template 教程. 每个人都会有每个的做法, 我也弄了一个,不过对比下面的这方法,实在甘拜下风!
=IF(MONTH(DATE(Year,Month,1))<>MONTH(DATE(Year,Month,1)-(WEEKDAY(DATE(Year,Month,1),2)-1)+{0;1;2;3;4;5}*7+{1,2,3,4,5,6,7}-1),”",DATE(Year,Month,1)-(WEEKDAY(DATE(Year,Month,1),2)-1)+{0;1;2;3;4;5}*7+{1,2,3,4,5,6,7}-1)
将此公式复制与一个6*7的矩阵中即可,简单方便!
如12月:
=IF(MONTH(DATE(Year,12,1))<>MONTH(DATE(Year,12,1)-(WEEKDAY(DATE(Year,12,1),2)-1)+{0;1;2;3;4;5}*7+{1,2,3,4,5,6,7}-1),”",DATE(Year,12,1)-(WEEKDAY(DATE(Year,12,1),2)-1)+{0;1;2;3;4;5}*7+{1,2,3,4,5,6,7}-1)
原理:
MONTH(DATE(Urtea,1,1)-(WEEKDAY(DATE(Urtea,1,1),2)-1)+{0;1;2;3;4;5}*7+{1,2,3,4,5,6,7}-1) 构造一个6*7的矩阵,如下图!
| 1,1 |
1,2 |
1,3 |
1,4 |
1,5 |
1,6 |
1,7 |
| 2,1 |
2,2 |
2,3 |
2,4 |
2,5 |
2,6 |
2,7 |
| 3,1 |
3,2 |
3,3 |
3,4 |
3,5 |
3,6 |
3,7 |
| 4,1 |
4,2 |
4,3 |
4,4 |
4,5 |
4,6 |
4,7 |
| 5,1 |
5,2 |
5,3 |
5,4 |
5,5 |
5,6 |
5,7 |
| 6,1 |
6,2 |
6,3 |
6,4 |
6,5 |
6,6 |
6,7 |
| 7,1 |
7,2 |
7,3 |
7,4 |
7,5 |
7,6 |
7,7 |
得出每一个格的日期所属月份,与该月的月份对比,若相等,则显示,否则为空.
MONTH(DATE(Urtea,1,1)-(WEEKDAY(DATE(Urtea,1,1),2)-1)+{0;1;2;3;4;5}*7+{1,2,3,4,5,6,7}-1)
(WEEKDAY(DATE(Urtea,1,1),2)-1) 此处计算该月1日与(1,1)这个单元格的距离.
{0;1;2;3;4;5}*7 此处计算6个星期,其中首星期无需加7.
{1,2,3,4,5,6,7}-1 此处分别为每个星期内的,周一到周日加上1-7天. -1是为了扣回从(1,1)起算的差距. 换而言之就是加+0, +1, +2, etc…
同时可以利用条件格式,把节假日, 假期等都用颜色标记起来.
方法: 将节假日,假期等分别存于一个列表中,命名!
=COUNTIF(Festival,H10)>0.9 (其实只要大于1,就表示改天是Festival,0.9不过是便于判断)