楼主 wjc2090742 |
题目:如下图,在A2输入任意日期,C2显示A2日期所在月有几个周六。如示例中,A2为2010-10-4,2010年10月有5个周六。当然,答案不是4就是5。 1、2010-11-4开帖。 2、任意方法均可,要求能适应A2日期变化,如果答案有版本限制,请注明。 3、A2日期为1901年之后任意日期。 4、正确答案加分。题目较基础,欢迎广大会员参与抢分。 指定日期当月有几个周六.rar 指定日期当月有几个周六(汇总).rar |
2楼 zm0115 |
=SUM((WEEKDAY(TEXT(A2,"e-m")+ROW(1:31)-1,2)=6)*((MONTH(TEXT(A2,"e-m")+ROW(1:31)-1)=MONTH(A2)))) 数组公式, 长了点,呵呵 |
3楼 wjh619993018 |
|
4楼 wangg913 |
|
5楼 mn860429 |
=SUMPRODUCT(1*(MOD(ROW(INDIRECT((EOMONTH(A2,-1)+1)&":"&(EDATE(A2,1)-DAY(A2)))),7)=0)) 07版 |
6楼 rongjun |
公式1:
|
7楼 piny |
70字元 =4+(WEEKDAY(TEXT(A2,"y/m")&"/1")+DAY(DATE(YEAR(A2),MONTH(A2)+1,0))>35) ============================================================= 68字元 =4+(WEEKDAY(TEXT(A2,"y/m/!1"))+DAY(DATE(YEAR(A2),MONTH(A2)+1,0))>35) ============================================================= 65字元 =4+(WEEKDAY(TEXT(A2,"e-m"))+DAY(DATE(YEAR(A2),MONTH(A2)+1,0))>35) ============================================================= 62字元 =4+(WEEKDAY(A2-DAY(A2)+1)+DAY(TEXT(A2-DAY(A2)+32,"e-m")-1)>35) |
8楼 水星钓鱼 |
07/10版通过。 |
9楼 su11wei18 |
|
10楼 君柳 |
|
11楼 ggsmart |
试一个,好长好长 =SUM(--(WEEKDAY(DATE(YEAR(A2),MONTH(A2),ROW(INDIRECT("1:"&DAY(DATE(YEAR(A2),MONTH(A2)+1,))))))=7)) |
12楼 liuguansky |
=SUM(N(MOD(TEXT(TEXT(EOMONTH(A2,0),"e-m-")&ROW(1:31),"0;;;!1"),7)=0)) |
13楼 rongjun |
|
14楼 gouweicao78 |
45字
|
15楼 amulee |
|
16楼 zhanghi |
来个超长数组 =SUM(--(WEEKDAY(EOMONTH(A2,-1)+1+ROW(INDIRECT("1:"&EOMONTH(A2,0)-(EOMONTH(A2,-1)+1))),2)=6)) |
17楼 biaotiger1 |
中规中矩的公式
|
18楼 mxqchina |
07直接使用,03里如果该函数不可用,并返回错误值 #NAME?,请安装并加载“分析工具库”加载宏。 |
19楼 JLxiangwei |
=IF(MONTH(TEXT(A2,"e-m")-WEEKDAY(TEXT(A2,"e-m"))+35)=MONTH(A2),5,4) |
20楼 wise |
数组公式,网上查阅了不少资料,总算查到了:
|
21楼 wjc2090742 |
本次的题目大家采用方法均为函数与公式法。总结之前先推荐一个willin2000版主的大帖,其中有很多日期、时间相关的基本算法。本人的水平有限,这里的分类是个人的看法,总结有欠妥的地方,还请海涵,如果有错或有不足,也请多多指点。 与今天有关的常用计算 http://www.exceltip.net/thread-345-1-1.html 思路1: 基本算法:构建从当月第1天起长31(可以更长,31为下限)的日期数组,并通过2个判断(日期是星期几;日期的月份与给定日期相同)来判断是否给定日期当月的周六,并加和计算。如2楼和3楼的第一个公式。代表公式:
基本算法:从当月第1天通过&-row(1:31)构建一个混合的数组(当月日期不足31时,最后几个元素会是错误值),判断数组中日期是否是周六,并用count来忽略错误值进行统计。如4楼、10楼第2个公式、17楼的最终公式,也是本题我自己的思路。代表公式:
基本算法:(当月天数+上月末日期是1周的第几天(以周日为1周第1天))/7,然后向下取整。该算法本人不是很理解,可以参考下帖: 计算两个日期之间有多少个星期六天数的自定义函数? http://www.exceltip.net/thread-12044-1-1.html 如3楼的后2个公式、15楼。代表公式:
基本算法:从当月第1天起,构建长度为当月天数的日期数组,判断日期是否是周六,将判断结果转化成数值后加和。这是本题中见到最多的算法,主要有3种写法,一是用ROW(ININDIRECT(首日:末日)),如6楼第1个公式、10楼第1个公式、17楼第1个思路、18楼;一种是在DATE中第3参数使用ROW(ININDIRECT(1:当月天数)),如9楼、11楼、20楼;一种是月初日期+ROW(ININDIRECT(1:当月天数)),如8楼(8楼使用TEXT来替代WEEKDAY或MOD进行判断,也是本题一个变化)。代表公式:
基本算法:利用EXCEL2010的新函数NETWORKDAYS.INTL,自定义为一周仅周六为工作日,计算当月有几个工作日,即几个周六。见4楼。
基本算法:(月末日期-上月最后1个周六)/7,然后取整。本人认为这个思路是思路3的一个变形,但是实在是太棒了,所以独立写为1个思路。另外,本人也曾套用这个算法来计算zm0115兄的“钱币之月”题目,完全成立。详细的思路待荣版有空分析,公式在13楼。
|
22楼 wjc2090742 |
本题评分定为: 1、答案正确+3技术,视答案精彩程度+1~4技术。 2、以ET鼓励多种思路原则,多种思路+3魅力,以ET积极挖掘Excel2010新性能原则,新函数公式+2魅力。 3、因为比如计算当月第一天有TEXT、DATE、EOMONTH、A2-DAY(A2)+1等诸多基础算法,本题中此类写法不同不算为不同思路。而以上楼思路及变化分类判断是否多种思路。 另,再次感觉到了总结的困难和评分的尺度难把握。可能很难让所有人都满意,如何对测试题衡量分值,也是ET需要进一步探索的。如果对总结或评分有异议或有不妥的地方,请不要客气的指出,将在版主们商议后进行调整。 |
23楼 苹果 |
能不能上传下附件。。 |
24楼 苹果 |
A2是什么 ,附件上传下,好吗 |
25楼 wjc2090742 |
题目和答案汇总在1楼。 |
26楼 w83365040371 |
|