ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 9834|回复: 29

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-12-24 22:19 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
反查日期(农历日期转为公历日期)虽然解决了,再拿出来大家练习.
根据现有的辅助资料,将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

查看全部评分

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

查看全部评分

TA的精华主题

TA的得分主题

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

回复 2楼 lzzgzby 的帖子

1               

TA的精华主题

TA的得分主题

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

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

本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-1-22 22:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
=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

查看全部评分

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

查看全部评分

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 | 显示全部楼层
现在提高一下技术分真不容易呀,学习一下其他人的函数
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-4 02:37 , Processed in 0.050306 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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