楼主 bbwsj |
出个我以前在EP出过的题目,那个旧贴应某些原因已经没了,也算是老题新出吧 我公司每月10号发工资,注意工作日发,遇非工作日延后到周一 在A2输入任意日期,在B2用公式显示离下个发薪日还有几天 如下:附件 发薪.rar 1、只能用函数公式,不能用辅助、自定义名称或自定义函数,能适用于03版的EXCEL 2、答题时限:(截止日期,2010年10月15日,到期后公布) 举例说明: 例1、如A2为2010-8-21日,下个发薪日就是2010-9-10日(周5),距离时间是20天 例2、如A2为2010-9-10日(周5)发薪日,下个发薪日就是2010-10-10日,但因为2010-10-10日是周日,实际发薪日为2010-10-11日,距离时间是31天 例3、如A2为2010-10-10日(周日),实际10月的发薪日为2010-10-11日,距离时间为1天 还有其他变化可能,无法全部一一例举,反正只考虑双休日,不考虑国定假日,按正常公司的实际发生情况考虑各种可能性吧 为免有疑异,增加数据以供核对 [table=332][tr][td=1,1,119]A列内容[/td][td=1,1,123]发薪日[/td][td=1,1,90]差几天[/td][/tr][tr][td]2007-2-9[/td][td]2007-2-12[/td][td]3[/td][/tr][tr][td]2007-2-10[/td][td]2007-2-12[/td][td]2[/td][/tr][tr][td]2007-2-11[/td][td]2007-2-12[/td][td]1[/td][/tr][tr][td]2007-2-12[/td][td]2007-3-12[/td][td]28[/td][/tr][tr][td]2008-2-8[/td][td]2008-2-11[/td][td]3[/td][/tr][tr][td]2008-2-9[/td][td]2008-2-11[/td][td]2[/td][/tr][tr][td]2008-2-10[/td][td]2008-2-11[/td][td]1[/td][/tr][tr][td]2008-2-11[/td][td]2008-3-10[/td][td]28[/td][/tr][tr][td]2008-2-12[/td][td]2008-3-10[/td][td]27[/td][/tr][tr][td]2009-12-21[/td][td]2010-1-11[/td][td]21[/td][/tr][tr][td]2005-12-10[/td][td]2005-12-12[/td][td]2[/td][/tr][tr][td]2005-12-12[/td][td]200 题目说了是2003版的E,所以对2003版不能运行的公式不算对 5555555555,我昨天把对的楼号,全部写了,怎么一个差错全部都没了尼 把[local]2[/local]汇总答案整理好了方便大家学习吧 汇总答案.rar |
2楼 rongjun |
发薪.rar |
3楼 liuguansky |
B2
数组下拉 |
4楼 zm0115 |
参与一个,公式丑陋了点。 修改一下,2010-9-28 再次修改一下,2010-10-7 写好几天了,实在是太长了,臭的不行,实在纠结要不要发上来献丑...还是发吧,看看大家的杰作。 发薪.rar |
5楼 wjh619993018 |
积极参与
|
6楼 wjc2090742 |
发薪.rar |
7楼 gouweicao78 |
|
8楼 kkitt |
B2=MIN(--TEXT(DATE(YEAR(A2),MONTH(A2)+{0,1},10)+TEXT(8-WEEKDAY(DATE(YEAR(A2),MONTH(A2)+{0,1},10),2),"[<3]0;!0")-A2,"0;99;99")) |
9楼 wjc2090742 |
简化了一下248字符的那个公式。普通公式。
EOMONTH在excel2003需要加载才能用,不知道是否符合要求,普通公式。
发薪.rar |
10楼 minzhu513 |
我来看答案的. |
11楼 rongjun |
简化一下公式:
发薪1.rar |
12楼 wjh619993018 |
再简化几个字符
|
13楼 zhanghi |
菜鸟也来凑个热闹 望老师多多指点 以除去周六周日为例 数组公式=SUM(--(WEEKDAY(A2+ROW(INDIRECT("1:"&B2-A2)),2)<6)) 相差几天.rar |
14楼 zhanghi |
老师图片中给出的结果应该是没有除去任何节假日吧 =SUM(--(WEEKDAY(A2+ROW(INDIRECT("1:"&B2-A2)),2)>0))数组 除去周六周日=SUM(--(WEEKDAY(A2+ROW(INDIRECT("1:"&B2-A2)),2)<6))数组 也可以换成其它休息日。我还没有理解了老师的意思,如9-12号中10号11号是双休则要结果为1还是为2 相差几天1.rar |
15楼 wqfzqgk |
QQ上讨论的上这里来了 |
16楼 水星钓鱼 |
|
17楼 wangg913 |
好题目。
想不出别的办法了。 |
18楼 apolloh |
80个 |
19楼 wjc2090742 |
前面提交的公式虽然长点,但是个人感觉还是可以接受的。还是暂时留着吧。
workday和Eomonth在03版中都不支持数组。补上一个严格的03版可用公式,不然我就没答案了。
发薪.rar |
20楼 gouweicao78 |
再来2个公式: 93字:
|
21楼 apolloh |
|
22楼 apolloh |
|
23楼 fly_fu |
資質有限,学習中。 |
24楼 wjc2090742 |
大家应该大都构建了数组吧。给一个单值的公式,虽然比较长。苦苦找了临界点好久,还是留着吧。 普通公式,2003版下包含1900年多年数据测试通过:
改进一下第一个答案
发薪.rar |
25楼 piny |
皆為數組公式,下拉 152字元 B2=MIN(--TEXT(DATE(YEAR(A2),MONTH(A2)+{0;1},10)+3-LEN(MMULT((WEEKDAY(DATE(YEAR(A2),MONTH(A2)+{0;1},10)+{0,1,2},2)<6)*10^{2,1,0},{1;1;1}))-A2,"0;!99;!99")) ============================================================= 150字元 B2=MIN(--TEXT(DATE(YEAR(A2),MONTH(A2)+{0;1},14)-LEN(MMULT((WEEKDAY(DATE(YEAR(A2),MONTH(A2)+{0;1},12)-{0,1,2},2)<6)*10^{1,2,3},{1;1;1}))-A2,"0;!99;!99")) ============================================================= 148字元 B2=MIN(--TEXT(DATE(YEAR(A2),MONTH(A2)+{0;1},14)-LEN(MMULT((WEEKDAY(DATE(YEAR(A2),MONTH(A2)+{0;1},12)-{0,1,2},2)<6)*10^{1,2,3},{1;1;1}))-A2,"0;99;99")) ============================================================= 141字元 B2=MIN(--TEXT(IF(WEEKDAY(DATE(YEAR(A2),MONTH(A2)+{0;1},10),2)={1,2,3,4,5,6,7},DATE(YEAR(A2),MONTH(A2)+{0;1},10)+{0,0,0,0,0,2,1})-A2,"0;99;99")) ============================================================= 136字元 B2=MIN(--TEXT(IF(WEEKDAY(DATE(YEAR(A2),MONTH(A2)+{0,1},10),2)=ROW($1:$7),DATE(YEAR(A2),MONTH(A2)+{0,1},10)+{0;0;0;0;0;2;1})-A2,"0;99;99")) ============================================================= 134字元 B2=MIN(--TEXT(IF(WEEKDAY(DATE(YEAR(A2),MONTH(A2)+{0,1},10))=ROW($1:$7),DATE(YEAR(A2),MONTH(A2)+{0,1},10)+{1;0;0;0;0;0;2})-A2,"0;99;99")) ============================================================= 133字元 B2=MIN(--TEXT(IF(WEEKDAY(DATE(YEAR(A2),MONTH(A2)+{0,1},10))=ROW($1:$7),DATE(YEAR(A2),MONTH(A2)+{0,1},9)+{2;1;1;1;1;1;3})-A2,"0;99;99")) ============================================================= 132字元 =MIN(--TEXT(IF(WEEKDAY(DATE(YEAR(A2),MONTH(A2)+{0,1},9))=ROW($1:$7),DATE(YEAR(A2),MONTH(A2)+{0,1},9)+{1;1;1;1;1;3;2})-A2,"0;99;99")) |
26楼 gouweicao78 |
用分析工具库函数58字:
|
27楼 金陵白玉床 |
什么意思啊?没看明白,不就是设置一个日期函数吗?好像在自定义的类型中吧? |
28楼 庭院幽幽 |
好想学习一下,可以看不到 |
29楼 hopeson2010 |
理解错题意!删除! 发薪.rar |
30楼 hopeson2010 |
=DATEDIF(A2,DATE(YEAR(A2),(DAY(A2)>10)+MONTH(A2),10),"d")+SUM((WEEKDAY(A2,2)={6,7})*{2,1}) 发薪.rar |
31楼 wangg913 |
=LOOKUP(A2,WORKDAY(9+EOMONTH(A2,-{2,1;1,0}),1))-A2 加载分析库函数。2007函数。 ********* 简化一下:
|
32楼 無心 |
占位看看 |
33楼 su11wei18 |
|
34楼 rongjun |
按黄版的公式改下,47字符
|
35楼 wjc2090742 |
EOMONTH使用后,在1900年1、2、3月份出错。原因是微软日期系统的bug。见下图。 当然不需要去考虑这样极端的情况,不过可以了解下。这次的题目,对lookup的认识提高了不少呢,无论是大头兄的,还是黄版的,都比我的lookup精妙太多了 |
36楼 piny |
不好意思 想請教一下此版的遊戲規則 在EH論壇 競賽題一律嚴格要求大家占好幾層樓回答 而只允許在自己樓層不斷精進修改 最終係以公式正確之最簡短者來評比 可是在這裡 我發現大多數的高手都是一個樓層回答一個想法 而且也得到分別給分的優待 想請問 這種作為是被允許而且鼓勵的嗎 這樣子有可能一次競賽的回答 就可以得到好幾十分的評比 初來貴寶地 對於貴版的給分制度現象有一些觀察 先謝謝肯回覆的朋友 ^^ |
37楼 wjc2090742 |
ET的技术分跟EH的技术分并不一样。 本题也不是竞赛题,而其中比如我的加分,是属于个人行为。可以个人加分,这点也与EH不同。 多楼回复是保留思考过程的做法,多楼评分有其弊端,我的看法是最多每个思路或方法评分。而评分的标准,确实是需要进一步统一和完善的,目前来说,大部分还是出题者的意愿。 谢谢piny的回复参与。ET还有很多有待完善的地方,可以多多提意见和建议,不断完善。 另外,ET并不怎么追求公式的最短。会更看重实用性、多种方法思路等等。并不以公式长短评选最佳,经常允许vba、sql、技巧、函数等各类方法解题,这点也是ET的特点。 |
38楼 piny |
嗯 謝謝版主回覆 可能是我還是ET的新人 什麼權限都沒有 不認同多樓回覆是保留思考過程的作法 在同一層樓系統性地整理出來完整思維 相信應更可以讓後進瞭解正確思路的建立 對一個Excel高手而言 同時想出三種不同方法解決同類型題目應該不難 不過在ET 他(她)可能會有很大的誘因想要在不同時點回覆 只是說出自己的想法 當然也不見得在同樓層回覆就可以改善某些情況 目前的評分制度 乍看下來 只會讓強者更強 不斷地拉開差距 企盼有好的方法統一和完善 再次謝謝版主的回覆 |
39楼 wjc2090742 |
piny兄说的在理,版主们也做了讨论,评分方面也做了调整。还希望piny兄继续在ET活跃,多多展示技术,多多提建议。 |
40楼 piny |
提建議而受到加分 有點意外 我自台灣來 只看得懂繁體字 只因為熱愛EXCEL 而硬著頭皮邊看翻譯邊學各大師的EXCEL 一開始先接觸了EH論壇 簡體字也因此識字率可以突破60% 後來因綠又發現ET論壇 只是會先入為主地希望這裡亦可以同樣茁壯而斗膽提出諍言 還有很多地方需要各位前輩提攜 我也會儘可能將所體會的微末分享給這兩個論壇 再次謝謝大家 ^^ |
41楼 bbwsj |
回38楼,题目是我出的,我的给分原则,同一人不得重复得分的 因为我无权限,给分就让版主代劳了 原给得分者的名单我写在第1楼,但不知道怎么回事,我后加汇总公式时,前面写的文字 竟然丢了很多 怕再改连上传的附件也丢了,不敢再去改1楼了,就私下给了传给版主,代加分数 看到了有重复给分的,是其他版主觉得公式好,给的私人分数。 |
42楼 guideming |
前来学习的 哈哈……在这儿又见到小北啦 |