ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

   
EH云课堂-专业的职场技能充电站 Excel转在线管理系统,怎么做看这里 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 高效办公必会的Office实战技巧 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 3839|回复: 28

[Excel 函数与公式] [56期函数]反查日期——农历日期转为公历日期

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-12-24 22:19 | 显示全部楼层 |阅读模式
反查日期(农历日期转为公历日期)虽然解决了,再拿出来大家练习.
根据现有的辅助资料,将F列的农历日期转化为公历日期,也就是优化I列的公式.
注意:请看新附件:
公式长度要求:
1、H列公式加I列公式总长度不超过300字的给予评1分。
2、如果,不用H列作辅助列,直接转换出结果,并且公式长度在400字以内给予加1分鼓励

3、精彩答案给予另加分.
补充说明:
要求
1、根据现有的辅助资料,不能再增加
2、公式必须通用,不定义名称;闰月,公历跨年度的要考虑。
3、答题E友,不要反复加贴,每人只占用一个楼层,在原贴编辑修改即可,以方便查阅和评分。


答题终止日期延期至:2010-1-30日
再补充:现在发现我的公式有缺陷,300字根本不能圆满完成竞赛题公式.因此,字符限制放宽,03版能正常显示,公式正确、通用就可以评技术分。
提示:
1、G列的日期有日期型和文本型,要综合考虑。
2、跨年,1年中没有腊月,如2009-12-25;1年中有1个腊月,如2002-12-12;1年中有2个腊月,如2003-12-28;
3、1年中有2个腊月但不跨年,如2003-12-2;
4、闰月,如2033-闰11-5,2009-闰5-2


[ 本帖最后由 wshcw 于 2010-2-1 12:02 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?免费注册

x

评分

参与人数 2鲜花 +2 技术 +2 收起 理由
江之南 + 2 感谢帮助
ldy + 2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-12-30 15:56 | 显示全部楼层

回复 1楼 wshcw 的帖子

A.B.E列为已知列
384
=INDEX(A:A,MATCH(--LEFT(TEXT(G8,"e"),4),YEAR(A$2:A$2491),)+MATCH(INDEX(E:E,TEXT(SUBSTITUTE(MID(SUBSTITUTE(TEXT(G8,"-m"),"-",REPT(" ",8)),9,8),"闰",),"[=12]!11;0")+1),OFFSET(B$1,MATCH(--LEFT(TEXT(G8,"e"),4),YEAR(A$2:A$2491),),,14),)+(SUBSTITUTE(MID(SUBSTITUTE(TEXT(G8,"-m"),"-",REPT(" ",8)),9,8),"闰",)="12")+IF(ISERR(-G8),,YEAR(G8)=2033)+COUNTIF(G8,"*闰*"))+ABS(-RIGHT(TEXT(G8,"d"),2))-1
数组公式
A.B列为已知列
397
=INDEX(A:A,MATCH(--LEFT(TEXT(G8,"e"),4),YEAR(A$2:A$2491),)+MATCH(MID("正二三四五六七八九十冬腊",TEXT(SUBSTITUTE(MID(SUBSTITUTE(TEXT(G8,"-m"),"-",REPT(" ",8)),9,8),"闰",),"[=12]!11;0"),1)&"月",OFFSET(B$1,MATCH(--LEFT(TEXT(G8,"e"),4),YEAR(A$2:A$2491),),,14),)+(SUBSTITUTE(MID(SUBSTITUTE(TEXT(G8,"-m"),"-",REPT(" ",8)),9,8),"闰",)="12")+IF(ISERR(-G8),,YEAR(G8)=2033)+COUNTIF(G8,"*闰*"))+ABS(-RIGHT(TEXT(G8,"d"),2))-1

[ 本帖最后由 lzzgzby 于 2010-1-23 00:23 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?免费注册

x

TA的精华主题

TA的得分主题

发表于 2010-1-15 11:05 | 显示全部楼层

给个解法

给个解法,由于有的年有两个腊月,字数不能达到楼主要求,贵在参与吧

[ 本帖最后由 donghan 于 2010-1-16 09:21 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?免费注册

x

评分

参与人数 1技术 +2 收起 理由
wshcw + 2 思 路 好 ,再 优 化 一 下 就 更 棒 !

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-1-17 09:29 | 显示全部楼层

回复 2楼 lzzgzby 的帖子

1               ::Q

TA的精华主题

TA的得分主题

发表于 2010-1-21 14:05 | 显示全部楼层
做了两个思路的,希望能给大家一些启发,这次从编辑公式中学了不少text函数的用法.

[ 本帖最后由 lanyuu 于 2010-2-1 21:37 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?免费注册

x

评分

参与人数 1技术 +2 收起 理由
wshcw + 2 思 路 好 ,若 能 再 优 化 一 下 速 度 就 ...

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-1-22 22:28 | 显示全部楼层
=LOOKUP(LEFT(SUBSTITUTE(G8,"闰",),6)+99,IF(B$2:B$2491=IF(COUNTIF(G8,"*闰*"),"闰",)&INDEX(E:E,1+MONTH(TEXT(LEFT(SUBSTITUTE(G8,"闰",),7),"0;@!1"))),A$2:A$2491+ABS(RIGHT(TEXT(G8,"d"),2))-1))
数组公式
没有考虑G列为不存在的农历日期

================================================
2033-闰11-5转换出错,请你尽快更正公式,否则撤销评分。
                                         ===wshcw===
================================================
更正公式:
=LOOKUP(99-LOOKUP(1,-LEFT(SUBSTITUTE(G8,"闰",),{6,7})),IF(B$2:B$2491=IF(COUNTIF(G8,"*闰*"),"闰",)&INDEX(E:E,1+MONTH(TEXT(LEFT(SUBSTITUTE(G8,"闰",),7),"0;@!1"))),A$2:A$2491+ABS(RIGHT(TEXT(G8,"d"),2))-1))

[ 本帖最后由 函数菜鸟 于 2010-2-1 23:33 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?免费注册

x

评分

参与人数 1技术 +2 收起 理由
wshcw + 2 思 路 好 ,若 能 再 优 化 一 下 速 度 就 ...

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-1-26 09:27 | 显示全部楼层
好像余地很大啊

I列数组公式(310字),只用了A、B列
{
=INDEX(A:A,MATCH(LEFT(TEXT(G8,"e"),4)-(-(MID(TEXT(G8,"e-m-"),7+(MID(G8,6,1)="闰"),1)&0)=0)&IF(MID(G8,6,1)="闰","闰",MID("正二三四五六七八九十冬腊",SUBSTITUTE(MID(TEXT(G8,"e-m"),6,2),"-",),1)),IF(ROW($1:$2491)<14,1899,YEAR(LOOKUP(A$1:A$2491,IF(B$1:B$2491="冬月",A$1:A$2491,""))))&LEFT(B$1:B$2491),))+ABS(RIGHT(TEXT(G8,"d"),2))-1
}

2056、2094、2219行怎么回事?故意的?

完全不考虑运算效率问题,弄到272字,用了A、B、E列
{
=INDEX(A:A,MATCH(LEFT(TEXT(G8,"e"),4)-(-(MID(TEXT(G8,"e-m-"),7+(MID(G8,6,1)="闰"),1)&0)=0)&IF(MID(G8,6,1)="闰","闰",LEFT(INDEX(E:E,SUBSTITUTE(MID(TEXT(G8,"e-m"),6,2),"-",)+1))),1899+COUNTIF(INDIRECT("b1:b"&ROW($1:$2491)),"冬月")&LEFT(B$1:B$2491),))+ABS(RIGHT(TEXT(G8,"d"),2))-1
}


附件2

[ 本帖最后由 子元女王 于 2010-1-27 11:47 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?免费注册

x

评分

参与人数 1财富 +30 技术 +2 收起 理由
wshcw + 30 + 2 思 路 好 ,若 能 再再 加 快 运 行 速 度就 ...

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-1-30 21:16 | 显示全部楼层
2056、2094、2219行是程序错误所至.

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-1-30 22:02 | 显示全部楼层
评分情况:

E友楼层公式长度运行情况技术分财富分
lzzgzby2384速度快3 
donghan3476速度快,但公式未优化2 
lanyuu5380速度慢2 
函数菜鸟6183速度慢2 
子元女王7272速度可以接受230

TA的精华主题

TA的得分主题

发表于 2010-2-1 12:33 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

关注官方微信,每天学会一个新技能

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2019-6-17 21:41 , Processed in 0.101015 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Wooffice Inc.

   

沪公网安备 31011702000001号 沪ICP备11019229号

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:徐怀玉律师 李志群律师

快速回复 返回顶部 返回列表