ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 胡剑0227

[分享] 练剑,拿日期函数开刀(数组公式初级)7小题(胡剑开课了...)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-6-23 16:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
呵呵,这可是2003就有的EOMONTH函数啊。 [/quote]




2003哪有这个函数啊,搜索都没有,找也找不到.你是用的增强版的2003吗?

TA的精华主题

TA的得分主题

发表于 2011-6-23 17:11 | 显示全部楼层

回复 111楼 angellbxsc 的帖子

为什么我复制你的公式显示#name?

TA的精华主题

TA的得分主题

发表于 2011-6-23 17:22 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-6-23 17:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 cleverzhzhf 于 2011-5-21 00:01 发表
真心的感谢胡版对我的每一小题的耐心指导,跟着胡版学习,我想尝试一个方法,但没有成功:我试着用
ROW(VALUE("2011-5-16"):VALUE("2011-9-30"))
代替胡版构造的足够大的区域:
"2011-5-15"+ROW($1:$150)
但是不 ...

还是这个老问题麻烦胡版~~~
怎样可以让ROW(VALUE("2011-5-16"):VALUE("2011-9-30"))正常使用,胡版给的建议是使用indirect,但我实在找不到使用方式,把indirect硬往里塞,但塞不进去哦~~~
胡版可以帮忙写一下吗?
多谢啦~~~

TA的精华主题

TA的得分主题

发表于 2011-6-23 17:40 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-6-23 17:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 cleverzhzhf 于 2011-6-23 17:32 发表

还是这个老问题麻烦胡版~~~
怎样可以让ROW(VALUE("2011-5-16"):VALUE("2011-9-30"))正常使用,胡版给的建议是使用indirect,但我实在找不到使用方式,把indirect硬往里塞,但塞不进去哦~~~
胡版可以帮忙写一下吗 ...



为什么不能写呢,你试试 ROW(1+1:3+3),这样确实不行的。ROW(INDIRECT(1+1&":"&3+3)),这样是可以的。所以呢你的公式可以写成 ROW(INDIRECT(VALUE("2011-5-16")&":"&VALUE("2011-9-30"))),ROW函数需要一个引用,INDIRECT提供了一个引用就这么理解吧,呵呵。
  1. =ROW(
  2.      INDIRECT(
  3.                VALUE("2011-5-16")
  4.                                  &":"&
  5.                                        VALUE("2011-9-30")
  6.               )
  7.      )
复制代码
关于INDIRECT可以看看这个帖子,呵呵
http://club.excelhome.net/thread-618433-1-1.html

写函数公式要慢慢的尝试去理解函数公式,可以从参数的类型出发去考虑,懂理以后慢慢能随心所欲了,不会盲目的去仿造了,呵呵。

[ 本帖最后由 胡剑0227 于 2011-6-23 17:50 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-6-23 20:25 | 显示全部楼层
看了第一题的答案,发现胡版真是用了好巧妙的解法啊。

我觉得一般我们想不到这样的解法,是因为我们把每个月的日期卡死在31天之内了,看来要用好函数还需要突破原来思维的局限

TA的精华主题

TA的得分主题

发表于 2011-6-23 20:32 | 显示全部楼层

回复 147楼 胡剑0227 的帖子

那个贴子就在我的收藏夹,呵呵~~最初对indirect的理解就是跟着您的这篇精华学习的。
使用方式原来如此哦~~~十分感谢胡版~~~我明白我错在哪里了~~~我是硬使用成了:
ROW(INDIRECT(VALUE("2011-5-16")):INDIRECT(VALUE("2011-9-30")))
是更加的大错特错了~~~
以前只是会用
=ROW(INDIRECT("1:"&LEN(A1)))
这次把它化了妆,自己竟然就不认识了~~~
笨啦笨啦~~~

TA的精华主题

TA的得分主题

发表于 2011-6-23 22:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
第二题交作业了

第二题:2008-8-15 至 2011-5-16 共有几个星期日,其Day值正好也为7(所在月的7号)

数组公式
=SUMPRODUCT(--(WEEKDAY(DATE(2008,ROW(INDIRECT("9:"&MATCH(DATE(2011,5,16),DATE(2008,ROW(1:100),16),0))),7),2)=7))

套用第一题的思路,从08年开始计算月份数,看看2011-5-16用公式date(2008,month,16),,求出这个month的数值是多少。在公式中粗略判断这个值不会大于100,所以我只用了row(1:100)。

当算出这个month后,问题就变成从2008-9-7到2008-month-7中所有7号是周日的计数总和,用sumproduct求出这个总和。

TA的精华主题

TA的得分主题

发表于 2011-6-23 22:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
明天再来看第二题的答案,感觉自己用函数解题的思路容易受限,不太能创新,第二题就基本上照搬了第一题的思路。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-10 17:13 , Processed in 0.032695 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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