用excel制作万年历的公式问题

用excel制作万年历时,在显示日期的单元格区域输入的这个公式如何理解,m_day-(WEEKDAY(m_day)-1)+(ROW()-5)*7这一步是怎么计算出来的? 具体公式如下:
=IF(MONTH(m_day)<>MONTH(m_day-(WEEKDAY(m_day)-1)+(ROW()-5)*7+COLUMN()-2),"",m_day-(WEEKDAY(m_day)-1)+(ROW()-5)*7+COLUMN()-2)

不清楚你的公式是在哪个单元格输入。
“m_day-(WEEKDAY(m_day)-1)+(ROW()-5)*7”——
m_day……是个自定义区域名称,可以直接引用一个单元格区域,可以是数值或日期格式。
(WEEKDAY(m_day)-1)……是借用星期函数,返回星期几(表现为:星期日=1、星期一=2、……),其实公式可以简化:WEEKDAY(m_day,2)
(ROW()-5)*7……这一步才是关键。利用行号*7,与公式中的COLUMN()配合,使向右每格增加1(天),至第7天(增加6天)后向下填充,使上下行相差“7”,就是上下间隔一个星期。
看他的附图,公式应该在第5行输入,故日期第一行=(5-5)*7=0,日期不增减。随着公式向下填充,每行增加7(天)。

至于该段公式要用引用原数据的单元格m_day减去星期表现形式的1~7,再加上0~7~14~21……,使数据在所给定的数值(或日期),逐格显示顺序日期。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-18
这个很好理解,有用过日历的人都知道。
第2个回答  2010-10-18
不理解!