ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[推荐] [答疑解惑]函数公式解释专用帖

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2006-6-9 21:42 | 显示全部楼层
本帖已被收录到知识树中,索引项:公式基础

楼主好,请问VLOOKUP和HLOOKUP还有LOOKUP三个函数有什么区别?

TA的精华主题

TA的得分主题

发表于 2006-6-10 18:06 | 显示全部楼层

麻烦山菊花老师解释一下这个公式

a3=IF(ROW(1:1)<=SUM(--(MMULT((Sheet1!$C$2:$G$19<60)+(Sheet1!$C$2:$G$19="缺考"),{1;1;1;1;1})>0)),INDEX(Sheet1!$A$2:$A$19,SMALL(IF(MMULT((Sheet1!$C$2:$G$19<60)+(Sheet1!$C$2:$G$19="缺考"),{1;1;1;1;1}),ROW(Sheet1!$C$2:$C$19)-1),ROW(1:1))),"")

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-11 01:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

to 镜409982411:Hlookup的H表示水平、Vlookup的V表示垂直。

这3个函数就是水平查找、垂直查找和查找。要说区别,前2个函数比较接近,看看函数帮助就可以了。

Vlookup和Lookup的对比请看http://club.excelhome.net/viewthread.php?tid=160099&replyID=&skin=0更详细。

to ice_7601:这个公式是Apolloh版主解多条件筛选的。你应该分开解读并注意理解MMULT

=IF(ROW(1:1)<=SUM(--(MMULT((Sheet1!$C$2:$G$19<60)+(Sheet1!$C$2:$G$19="缺考"),{1;1;1;1;1})>0)),INDEX(Sheet1!$A$2:$A$19,SMALL(IF(MMULT((Sheet1!$C$2:$G$19<60)+(Sheet1!$C$2:$G$19="缺考"),{1;1;1;1;1}),ROW(Sheet1!$C$2:$C$19)-1),ROW(1:1))),"")

1、黄色部分:(Sheet1!$C$2:$G$19<60)+(Sheet1!$C$2:$G$19="缺考")表示C2:C19区域(18行5列)成绩<60分或缺考

MMULT(array1,array2)——array1与array2的矩阵相乘

要求array1的列数与array2的行数相等——18行5列的array1要求array2的行数为5

array2——{1;1;1;1;1}——5行1列

MMULT所得结果行数与array1同,列数与array2同,故所得结果为18行1列。

由此将18行5列的条件数组变成18行1列的一个垂直数组,大于0则表示条件数组为TRUE+FALSE或者TRUE+TRUE,即我们想要设置的条件——“只要是不及格或者缺考”

理解MMULT请参考山菊花版主的《初识MMULT》

以及四海飘零的《多条件求和新方法》http://club.excelhome.net/viewthread.php?tid=170501&px=0

2、根据上面的认识,回到熟悉的句型:

=If(row<=满足条件记录个数,"",index(记录所在列,small(if(条件满足,返回对应记录行号),row))

这个的解释就不必说了吧,论坛太多了。

TA的精华主题

TA的得分主题

发表于 2006-6-22 18:56 | 显示全部楼层

http://club.excelhome.net/viewthread.php?tid=173419&px=0

可以解悉菊花回贴的出荷预定中公式用到的

row()>row吗?

原楼下:己得到答案了,刚才没注意到菊花定义了名称row,

为节约楼层方便阅读,将楼下的话合并到本帖并删除

[此贴子已经被gouweicao78于2006-6-23 11:58:59编辑过]

TA的精华主题

TA的得分主题

发表于 2006-6-26 14:07 | 显示全部楼层

http://club.excelhome.net/viewthread.php?tid=172810&px=0

    请问chrisfang编写的用函数方法得到的滚动文字,函数的意义不明白,敬请给于详细解释,特别是Time,REPT,Front,Back等,谢谢!

TA的精华主题

TA的得分主题

发表于 2006-6-26 15:50 | 显示全部楼层
QUOTE:
以下是引用zh_jiang在2006-6-26 14:07:51的发言:

http://club.excelhome.net/viewthread.php?tid=172810&px=0

    请问chrisfang编写的用函数方法得到的滚动文字,函数的意义不明白,敬请给于详细解释,特别是Time,REPT,Front,Back等,谢谢!

受版主委托,这个问题我代为答复。那个帖子里面例子较多,我们现在先只以第一个附件中的公式为例。公式如下:

=IF(time>16,RIGHT(B4,time-16)&REPT(" ",16)&LEFT(B4,LEN(B4)-time+16),front&B4&back)

公式中的time、front、back均为定义名称,各自定义的公式如下:

time=MOD(INT((NOW()-Sheet1!$B$1)*1000000),31)

front=REPT(" ",time)

back=REPT(" ",16-time)

先看第一个time的公式,now()是取得现在目前的系统时间,以现在6月26日下午15:23分左右为例,返回的数字是38894.64112。Sheet1!$B$1里面原有一个过去的时间值作为基准时间(B1单元格使用颜色进行了隐藏)。now()-B1的结果就是就是一个随时间不断变大的数字,之所有不直接用now(),是因为原有数字较大,减去一个基准时间后数字位数变小更宜操作(如果是大数字碰到mod函数你就知道有麻烦了)。

然后上面的结果去乘以1000000再int取整,其结果就是返回一个以十分之一秒级别的速度变化的数字。然后再用mod函数使得这个数字的变化范围限定在0~30之间。其中30就是这个滚动字符串的最大显示长度。

front公式的意思需要先理解REPT函数,rept是重复某个字符的意思,第一个参数是需要复制的字符,第二个参数是需要复制的次数。这个公式的含义就是重复time个空格的意思。随着time的数值在0~30之间变化,空格也由少变多。

back公式的意思与上面类似,所不同的是,复制的空格在time小于等于16的情况下随time增大空格减少。

我们最后来看第一个显示滚动效果的公式,公式可以分为两部分看:

一部分是当time<=16时,公式为front&B4&back,B4单元格为需要显示的文本字符串,例子中就是"我爱EXCELHOME俱乐部",front就是在这个文本之前需要的空格,back就是需要加在文本之后的空格,他们好比两个抬轿子的人,抬着中间的"我爱EXCELHOME俱乐部"这几个字在走。随着time随时间流动而变大,前面的空格增多,后面的空格减少,形成的效果就是文字部分在随时间向右移动。

第二部分是当time>16时,公式为RIGHT(B4,time-16)&REPT(" ",16)&LEFT(B4,LEN(B4)-time+16),这部分也好理解,当time>16的时候,也就是文本字符串的最后一个字"部"已经走到了边框的最右端,接下来需要把这个字符串拆分开来,一部分字符显示在最左边,另一部分显示在最右边,这样形成的效果才是文字滚屏出现的效果。所以right函数和left函数分别拆分了字符串的末尾和开头,分别显示在边框的左边和右边,中间就是固定的16个空格。随time变化,拆分出来的内容也随之变化,形成运动的效果。

好了,我只能解释到这里了,相信大多数人都能明白了吧。其实这个例子函数应用并不困难,想到一般都能做到,只是需要稍微有些创意而已。

[此贴子已经被作者于2006-6-26 15:53:35编辑过]

TA的精华主题

TA的得分主题

发表于 2006-6-26 16:03 | 显示全部楼层

自己看着公式,对着帮助理解,半生半熟的,请有空帮我解释以下几个公式,谢谢!

1、=TEXT(MID(D4,7,6+(LEN(D4)=18)*2),"#-00-00")*1 , 用LEN函数后面乘2?,最后*1?,MID和LEN之间用+?+表示或者吗?如果不用LEN,好像做出来也是对的。

2、=IF(A3<>"",DATEDIF(TEXT((LEN(A3)=15)*19&MID(A3,7,6+LEN(A3)=18)*2),"#-00-00"),TODAY(),"Y"),)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-26 18:06 | 显示全部楼层

to 烟花三月:

1、这是从身份证提取出生日期的公式。

Mid(D4,7,6)——从D4的第7个字符开始截取6个字符(15位身份证的7~12是出生日期)

(Len(D4)=18)*2——如果D4是18位,Len(D4)=18返回True,True*2=2,否则False*2=0

即:Mid(D4,7,6+(Len(D4)=18)*2)——当D4是18位截取的是8个字符,否则是6个字符。

Text("19810101","#-00-00")得到1981-01-01的文本

Text("810101","#-00-00")得到81-01-01的文本,用*1或者/1或者+0或者-0或者--等可以将它转为数值型(日期是数值的一种)

2、、=IF(A3<>"",DATEDIF(TEXT((LEN(A3)=15)*19&MID(A3,7,6+LEN(A3)=18)*2),"#-00-00"),TODAY(),"Y"),)

还是Text()部分的问题,当A3的身份证是15位的时候(LEN(A3)=15)*19得到19,否则得到0。

Mid同上,比如A3是15位身份证得到文本:19810101;若为18位则得到文本:019810101

这两个经过Text后都得到1981-01-01。

[此贴子已经被作者于2006-6-29 17:34:13编辑过]

TA的精华主题

TA的得分主题

发表于 2006-6-28 23:32 | 显示全部楼层

请帮忙解释下面这个公式的意思

谢谢

=LEFT(A1,MAX((COUNTIF($A1,$C$1:$C$5&"*")*LEN($C$1:$C$5)))

能不能把公式的每一步的意思解释一下

因为我只是单单知道COUNTIF、LEN、MAX函数的简单应用

像上面那样合起来是什么意思

COUNTIF($A1,$C$1:$C$5&"*")

COUNTIF($A1,$C$1:$C$5&"*")*LEN($C$1:$C$5)

MAX((COUNTIF($A1,$C$1:$C$5&"*")*LEN($C$1:$C$5)

这三步具体是什么意思??

谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-29 08:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
COUNTIF($A1,$C$1:$C$5&"*")——A1是否以C1:C5单元格的字符开头,比如A1的开头字符是C3,则返回{0;0;1;0;0}即A1(仅1个)单元格中包含以C3开头的单元格个数是1个(当然最多就1个)

COUNTIF($A1,$C$1:$C$5&"*")*LEN($C$1:$C$5)——Len()返回C1:C5各自的字符串长度,比如{1;2;3;4;5}与上面Countif返回的{0;0;1;0;0}相乘得到{0;0;3;0;0}

MAX((COUNTIF($A1,$C$1:$C$5&"*")*LEN($C$1:$C$5)——Max({0;0;3;0;0})=3

即:比如A1单元格的开头字符是C3单元格的内容,则返回LEFT(A1,C3单元格字符串长度)——实际上也就是返回C3的内容。

如果是要返回C3单元格内容,可以用其他公式比如——普通公式

=LOOKUP(1,0/FIND($C$1:$C$5,$A1),$C$1:$C$5)

因为你没有给出附件、也没有给出链接,只能脱离实际地解释。(请注意阅读1楼规则)

[此贴子已经被作者于2006-6-29 8:49:05编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-31 01:14 , Processed in 0.024770 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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