ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

应几位老手对新手的心愿,此楼已成烂尾楼,就让它沉下去吧,请勿再顶帖,谢谢!

   关闭 [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-4 21:10 | 显示全部楼层
chrisfang 发表于 2011-10-4 20:56
很高兴能有这样的研究方向和专业精神,同时也很高兴我为这项研究贡献了自己的一份力量。请我的解答对您和 ...

     我正在尽心地研究版主的公式,如有问题还要向版主讨教呢!
    通过与版主这样的侠义之士交流,受益匪浅是一定的,但向我这样的水平,你知道,与你不是一个档量级的,我只是凭感觉出题,凭感觉思想,至于专业,我就是带着耳朵来EH来学习的,收益则是长远的,我还可以交给我的学生很多学来的思想,包括版主的思路中的精华,从而给中国的创新精神打好基础,可以说版主的做法真是利在当代,功在千秋,也可以说是功德无量。当我水平有所提高的时候,我会向版主这样的好人(包括版主和香川妖群子)及时汇报的。
    请版主在有空的时候出招吧,谢谢!

TA的精华主题

TA的得分主题

发表于 2011-10-4 21:11 | 显示全部楼层
另外,帖子标题也好改改了,“无人能解决的问题”从来都是论坛的笑话,在这样标题下的帖子里面出题或答题,都会自贬身价的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-4 21:13 | 显示全部楼层
本帖最后由 aaaaaa123459 于 2011-10-4 21:14 编辑
chrisfang 发表于 2011-10-4 21:11
另外,帖子标题也好改改了,“无人能解决的问题”从来都是论坛的笑话,在这样标题下的帖子里面出题或答题, ...


好的,我改!
版主对标题有什么好的想法和建议吗?如果有我会首先,采用,如果版主不想干预,我就随意 了。

点评

我想干预的话,随时都可以,但我不想妄自滥用这样的权力。所以还是希望你自己考虑得当为好,用好自己的权利。  发表于 2011-10-4 21:16

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-4 21:17 | 显示全部楼层
这样行吗,版主。
《过千人浏览下载附件,仅数十人回复,目前暂未解决的问题!版主玩笑曰:简直是让公鸡下蛋!》

点评

实话:这样的标题让人很无语。不过你很有才,可以专门给淘宝的商品起名。  发表于 2011-10-5 20:25

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-4 21:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
dg831451 版主在48楼说过“非要公鸡下蛋??”
我也是非常高兴地借用过来,表示这个问题有点难度!你不介意吧

点评

我介不介意其实并不重要,重要的是你介不介意,如果你对这句话感到特别不安而提出这个问题,说明你还是介意的。  发表于 2011-10-4 21:27

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-4 21:22 | 显示全部楼层
下面我继续研究版主的公式,一会谈点,如果不对,万勿笑纳,一定不要把我看成和你同一级别的,谢谢!

TA的精华主题

TA的得分主题

发表于 2011-10-4 21:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
aaaaaa123459 发表于 2011-10-4 21:22
下面我继续研究版主的公式,一会谈点,如果不对,万勿笑纳,一定不要把我看成和你同一级别的,谢谢!

不错!这样才是学习的方法和态度,正确与否都不是我们所在意的,论坛就是容错之处,从错误中学习和成长才是论坛的价值所在。期待您的学习反馈!

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-4 21:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 aaaaaa123459 于 2011-10-12 12:42 编辑

     点评不专业,以我的初级水平,只能这样一步步来,而且时间很长,请忍受一下,如有错误,请及时纠正!
   版主给出的公式为:
=ADDRESS(1,LOOKUP(ROW(A1)-1,COUNTIF(OFFSET(数据源!A$1,,,,COLUMN(A:AK)),"*人*"),COLUMN(A:AK))+1)
下面开始分析:
    首先,确定行标
          我们求的单元格地址都在第一行,所以行标是1,用ADDRESS(1,列标),中的1是固定的,关于列标,通过下面的过程求出。
    其二、求列标的过程
          其中COLUMN(A:AK)产生A列到AK列的列数形成的数组{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37}。
          OFFSET(数据源!A$1,,,,COLUMN(A:AK))  返回由37个向量a1,a1:b1,a1:c1……a1:AK1.
         COUNTIF()查找37个向量中包含“人”字的个数,形成37个数组元素,组成新的以每个向量包含“人”字个数的新数组:
{0,1,1,1,2,2,2,2,3,4,4,4,5,6,7,8,9,10,10,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12},也就是第一个向量A1中包含着0个“人”字,第二个向量A1:B1包含着1个“人”字,……到第5个向量A1:E1时才开始包含有2个“人字”……最后一个向量a1:ak1中包含12个“人”字,这样,第n个向量与对应包含“人”个数的关系,我们把两个数组对应起来就好说了,
{0,1,1,1,2,2,2,2,3,4,   4, 4,   5,  6,  7,  8,  9, 10,10,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12}→人数     
{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37}→第n向量
上面为了一一对应,我把“人”个数数组的空间进行了调整,不能直接引用到公式中的。
   我们可以看出,“人数”数组中的元素大小每发生变动的时候的元素x,其对应“第n向量"数组的对应元素y所代表的数就是包含第x个“人”字的单元格的列标。所以下面的任务就是找到“人数”数组中元素发生变化(+1)后的元素,毫无疑问,LOOKUP()有这个功能,在第一个数组中COUNTIF(OFFSET(数据源!A$1,,,,COLUMN(A:AK)),"*人*"),寻找“人”字对应的位置,然后返回对应数组COLUMN(A:AK)中对应的列标,不过等一下,LOOKUP()在寻找的时候,要求第一数组升序,这个没有问题,COUNTIF(OFFSET(数据源!A$1,,,,COLUMN(A:AK)),"*人*"),就是按升序排列的,接着看LOOKUP()的第二个特点,搜寻……,这样说没有针对性,我把问题作一个特殊情况具体化一下,通过案例理解可能会更好,如LOOKUP(2,{0,1,1,1,2,2,2,2,3,4,4,4,5,6,7,8,9,10,10,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12},{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37}),LOOKUP()
首先在{0,1,1,1,2,2,2,2,3,4,4,4,5,6,7,8,9,10,10,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12}寻找2,它会按升序检查完数组,返回小于等于2的最后一个元素的位置,也就是下一个将不再是小于等于2的前一个数的位置,这也是LOOKUP()
函数需要参数中第一数组升序的原因,我们看到数组中有4个2,它会返回最后一个2的位置8,而不是第一个2的位置5,所以返回的位置后面的元素正好开始+1,也就是对应又一个“人”字的位置,也就是第3个“人字的位置”,受此特点要求,我们要搜索第n个“人”字的位置就得先在“人数”数组中搜寻n-1的位置,然后把位置+1就是第n个“人字的位置”,当然这个位置的返回由第二个数组来完成,也就是由数组{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37}返回n-1的位置,即LOOKUP(ROW(A1)-1,COUNTIF(OFFSET(数据源!A$1,,,,COLUMN(A:AK)),"*人*"),COLUMN(A:AK)),再把LOOKUP()的返回值+1即可,也就是用LOOKUP(ROW(A1)-1,COUNTIF(OFFSET(数据源!A$1,,,,COLUMN(A:AK)),"*人*"),COLUMN(A:AK))+1返回第n个“人”字的列标,那么n怎么来设定,我们想到了把row(a1)当成n,公式向下拉就可以返回从1,2,3……12,当然这是n,我们要搜寻n-1,所以LOOKUP()的第一个参数自然就是row(a1)-1,这样就可以把第n个包含“人”字的列标数求出了。
         第三、返回地址文本。
       知道了行标(固定为1)和列标(中的结果)最后,通过ADDRESS()函数返回第n个“人”字所在单元格地址的文本。
所以最终的公式为:
=ADDRESS(1,LOOKUP(ROW(A1)-1,COUNTIF(OFFSET(数据源!A$1,,,,COLUMN(A:AK)),"*人*"),COLUMN(A:AK))+1)
       智多星版主,我分析的对吧!
       这样细化不知道哆嗦不!
      
            

点评

现在这个版本不错,基本上都说清楚了。第(2)点叫三维引用或一组向量都没关系,你能理解是这样37个大小不同的数组区域就行。  发表于 2011-10-5 22:51
第二点返回的那不是你所谓的向量,而是三维引用。  发表于 2011-10-5 20:53
第(3)点的后面部分有点含混不清,另外Lookup在这里使用的原理没有交代清楚。其他基本正确。  发表于 2011-10-5 10:25
第二点的理解没到位  发表于 2011-10-4 21:49
提醒一下,EH对于无意义的占楼式发帖的态度是不支持的  发表于 2011-10-4 21:31

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-4 21:52 | 显示全部楼层
请问版主,第二点的OFFSET(数据源!A$1,,,,COLUMN(A:AK))  怎么解读!

点评

原来版主点评了  发表于 2011-10-5 20:55
这是一个三维引用,通过这一个公式,返回一组尺寸大小依次扩大的单元格区域。  发表于 2011-10-4 21:57

TA的精华主题

TA的得分主题

发表于 2011-10-4 22:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
今天不早了,楼主用功学习也不要搞得太晚。Excel的学习不在于一时,在于滴水长流。
再给一个你后面新增的天干地支问题的公式答案吧,希望你有时间的时候能够体会和领悟,我先去休息了。
=LOOKUP(2,1/(MATCH(LEFT("辛亥"),{"甲","乙","丙","丁","戊","已","庚","辛","壬","癸"},0)&MATCH(RIGHT("辛亥"),{"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"},0)=(MOD(ROW(1:60)-1,10)+1)&(MOD(ROW(1:60)-1,12)+1)),ROW(1:60))

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-16 20:11 , Processed in 0.048984 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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