ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2007-3-16 14:04 | 显示全部楼层
本帖已被收录到知识树中,索引项:公式基础
求助:

如何能使后一格计算出前一格中的输入的计算公式?假如在A1单元格中输入1+3+4.3+(5+5*2),在B1单元格中就能显示结果,

[此贴子已经被作者于2007-3-16 14:05:18编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-3-17 00:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QUOTE:
以下是引用zhanguifei在2007-3-16 14:04:26的发言:
求助:

如何能使后一格计算出前一格中的输入的计算公式?假如在A1单元格中输入1+3+4.3+(5+5*2),在B1单元格中就能显示结果,


参考47楼:得到含有备注的算式的计算结果

使用宏表4.0函数Evaluate定义名称来解决。

QUOTE:
以下是引用鸟粥在2007-3-16 14:00:59的发言:

哇,真是个学习的好园地,以后我会多多光顾!

有个难题想问问各位高手

可以详解下VLOOKUP、SUMIF和ROUND的用法及含义吗?

Vlookup——请参考:[函数入门之查找函数VLOOKUP]  恐怕没有比这个帖子更详细的了。

Sumif——请参考:1、函数自身的帮助文件;

2、

3、[通配符在vlookup、match、sumif中] 

4、[使用sumif三维引用对不同工作表合计] by chenjun 以及本帖第43楼:Sumif经典用法——三维引用多表汇总解释

Round用法很简单,直接看函数帮助就可以了。

[此贴子已经被作者于2007-3-17 1:05:27编辑过]

TA的精华主题

TA的得分主题

发表于 2007-3-22 16:58 | 显示全部楼层

能不能麻烦解释一下下列公式的意思

1.DATE(YEAR(NOW()),A1,20-WEEKDAY(DATE(YEAR(NOW()),A1,1),2)+IF(WEEKDAY(DATE(YEAR(NOW()),A1,1),2)>5,7,0))

2.IF(A1>12,"",IF(A1>=1,IF(COUNTIF(A$1:A1,A1)=1,CONCATENATE(A1,"月",1,"日"),CONCATENATE(A1,"月",DAY(DATE(YEAR(NOW()),A1+1,0)),"日")),""))

3.IF(A2>12,"",IF(A2>=1,IF(COUNTIF(A$1:A2,A2)=1,CONCATENATE(A2,"月",1,"日"),CONCATENATE(A2,"月",DAY(DATE(YEAR(NOW()),A2+1,0)),"日")),""))

而且公式2和3除了A换成了A2,别的都一样,怎么就一个显示月份第一天,另一个显示月份最后一天的日期呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-3-26 11:18 | 显示全部楼层
QUOTE:
以下是引用nectar在2007-3-22 16:58:25的发言:

能不能麻烦解释一下下列公式的意思

1.DATE(YEAR(NOW()),A1,20-WEEKDAY(DATE(YEAR(NOW()),A1,1),2)+IF(WEEKDAY(DATE(YEAR(NOW()),A1,1),2)>5,7,0))

2.IF(A1>12,"",IF(A1>=1,IF(COUNTIF(A$1:A1,A1)=1,CONCATENATE(A1,"月",1,"日"),CONCATENATE(A1,"月",DAY(DATE(YEAR(NOW()),A1+1,0)),"日")),""))

3.IF(A2>12,"",IF(A2>=1,IF(COUNTIF(A$1:A2,A2)=1,CONCATENATE(A2,"月",1,"日"),CONCATENATE(A2,"月",DAY(DATE(YEAR(NOW()),A2+1,0)),"日")),""))

而且公式2和3除了A换成了A2,别的都一样,怎么就一个显示月份第一天,另一个显示月份最后一天的日期呢?

离开附件谈公式解释就像没有语境去谈论一句话的意思。

公式1,自己慢慢分解Date(年,月,日),其中年份就是Year(Now())即系统时间的年份;月份就是A1的数字;日期则根据系统日期当年的A1 月的第一天是星期几有关。

比如A1输入4,则Weekday(Date(2007,4,1),2)表示2007-4-1的星期数7(即星期日),IF(WEEKDAY(DATE(YEAR(NOW()),A1,1),2)>5,7,0)——如果该月1日星期数大于5(即周末)则+7,

则公式1的日期为20-7+7=20,得到2007-4-20

公式2和公式3是同一公式下拉复制,并非就一定显示第一天和最后一天,而是根据A列中的数据不同改变的。几个IF的含义都不难:IF(COUNTIF(A$1:A2,A2)=1——表示从A1:A2区域中有几个A2,(A$1:A2是一个变动的区域,随着下拉复制变成A$1:A3……)——当=1个时,显示A1月份的第一天,当超过1个时,即不是第一次出现时,显示月末日期。

TA的精华主题

TA的得分主题

发表于 2007-3-26 23:28 | 显示全部楼层

学习是一个辛苦的不乏乐趣的过程,急于吃成胖子只会迷糊~~~~~我好想成胖子啊,迷糊迷糊

我老是不清楚那个200是怎么取出来的

{=SUM(SUMIF(INDIRECT(ROW($1:$9)&"!a:a"),$A4,INDIRECT(ROW($1:$9)&"!c:c",)))}出自http://club.excelhome.net/viewthread.php?tid=229074&replyID=&skin=0

是个数组公式,最后求的却是D列的和,烦劳看下山菊花做的表

[此贴子已经被作者于2007-4-3 23:26:16编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-3 21:15 | 显示全部楼层
QUOTE:
以下是引用tinalei在2007-3-26 23:28:37的发言:

=SUM(SUMIF(INDIRECT(ROW($1:$9)&"!a:a"),$A4,INDIRECT(ROW($1:$9)&"!c:c",)))出自http://club.excelhome.net/viewthread.php?tid=229074&replyID=&skin=0

QUOTE:

SUMIF(range,criteria,sum_range)

Range    为用于条件判断的单元格区域。

Criteria    为确定哪些单元格将被相加求和的条件,其形式可以为数字、表达式或文本。例如,条件可以表示为 32、"32"、">32" 或 "apples"。

Sum_range    是需要求和的实际单元格。

很好,已经自己看函数帮助了。

用“庖丁解牛”把上面公式分成对应的Range、Criteria、Sum_range三块:

INDIRECT(ROW($1:$9)&"!a:a")——是Range,用于条件判断的单元格区域。

QUOTE:

Row($1:$9)产生的是{1;2;3;4;5;6;7;9}这么个9行1列的数组,与"!a:a"合并,再用Indirect引用,分别引用:

工作表1的A列——1!A:A……至工作表9的A列。

$A4——条件

INDIRECT(ROW($1:$9)&"!c:c")——工作表1至9的C列,求和区域。

所得到的是一个9行1列的    工作表1至9的A列值为A4的    C列的值之和

最后Sum(Sumif())——将这9行1列的9个数再求和。

[此贴子已经被作者于2007-4-3 21:16:23编辑过]

TA的精华主题

TA的得分主题

发表于 2007-4-7 15:57 | 显示全部楼层

解释下贴5楼附件的模糊匹配求值公式

求助!当所要提取的数据项不完全相同时,如何提取对应数据? 

QUOTE:
C7=OFFSET(表2!C$6:F$6,MATCH(10,MMULT(--ISNUMBER(FIND(MID($B7,COLUMN(A:J),1),表2!$B$7:$B$154)),ROW($1:$10)*0+1),0),0)

本公式难理解的是MMULT函数部分,从里向外看看公式的运算。

一、绿色区部分--ISNUMBER(FIND(MID($B7,COLUMN(A:J),1),表2!$B$7:$B$154))

1、从里向外看,最里面的函数是COLUMN(A:J),得到了{1,2,3,4,5,6,7,8,9,10}这一个10元素横向数组。

2、通过MID($B7,{1,2....,9,10},1}把要匹配的B7字串"枝江酒业股份有限公司"分解为{"枝","江",...,"公","司"},如果要匹配的字串不够10个则后面均以空字符来补充,如"江峡船舶柴油机厂"分解为{"江","峡",...,"机","厂","",""},注意""也是一个字符。

3、公式变为FIND({"枝","江",...,"公","司"},表2!$B$7:$B$154),它的作用是用所得的10个字符与匹配区 表2!$B$7:$B$154 一一比较,结果是一个 154行X10列 的二维数组,为了好理解,下面所述均把匹配区看为只有两个单元格,即只与 表2!$B$7:$B$8 作比较,结果是{3,4,5,6,7,8,9,10,11,12 ; #VALUE!,#VALUE!,#VALUE!,#VALUE!,7,8,9,10,11,12},以红色分号往左和往右,分别得到两组10个元素的横向数组,从结果可以看到,分解后的字串如果在匹配单元格中能找到,结果得到它所处的字串位置数,如果找不到的字符就为得到错误值#VALUE!,这样我们的匹配条件就很明确了,就是能得到10个数值的单元格就是最终想要匹配的单元格了。注意""这个空字符在任意字串的单元格中都能找到,结果都是1。

4、下面的问题就是怎么才能把FIND函数的154行X10列二维数组结果能转化为一个 154行X1列的 列向数组呢?由此可想到用函数MMULT(数组1,数组2)来转换,它的转换要求是数组1的列数要与数组2的行数一样,从而要构建一个10行1列的数组2,所以用到了黄色部分来构建,等一下再谈数组2的构建问题,先说说数组1的问题,由于它里面有错误值#VALUE!存在,而MMULT函数对参与运算的两个数组要求均为数值,把以要先把数组1处理一下,使用的函数就是ISNUMBER函数了,如果它的参数是数值,就为TURE(T),反之为FALSE(F)。通过用ISNUMBER({3,4,5,6,7,8,9,10,11,12 ; #VALUE!,#VALUE!,#VALUE!,#VALUE!,7,8,9,10,11,12})后得到结果{T,T,T,T,T,T,T,T,T,T ;F,F,F,F,T,T,T,T,T,T},但它还不是数值数组,所以要通过--ISNUMBER(...) 的减减运算把逻辑值转为{1,1,1,1,1,1,1,1,1,1 ;0,0,0,0,1,1,1,1,1,1}这样的数值数组。至此绿色部分解释完毕。

二、黄色部分ROW($1:$10)*0+1

  前面说到要构建MMULT的数组2,它是一个10行1列的数组,由于数组1的结果是{1,1,1,1,1,1,1,1,1,1;0,0,0,0,1,1,1,1,1,1},要分别得到左边和右边1的个数,就要求数组2是{1;1;1;1;1;1;1;1;1;1}这样的数组,所以先用ROW($1:$10)得到{1;2;3;4;5;6;7;8;9;10},再 *0+1 就得到了要的数组2,从而通过MMULT来运算就得到了{10;6}的结果数组。

三、得到结果数组后,后面思路就容易想到了

  通过用函数MATCH(10,{10;6},0),可以精确找到结果数组中为10的元素位置也就是1,注意附件中的公式省略了蓝色的0,再用OFFSET或INDEX函数来引用相应的匹配区中的单元格就行了,这里是用了OFFSET(表2!C$6,1,0)的方法来得到匹配单元格为 表2!C$6 ,附件中的公式在这里也省略了蓝色的0。另外由于附件中使用的是横向多单元格数组公式,所以用OFFSET(表2!C$6:F$6,1,0)来得到一个匹配区域,即为 表2!C$6:F$6 。

 [em08][em08] ~~呼,终于写完了,解释的时间比想这个问题的时间还要多得多。

[此贴子已经被作者于2007-4-7 19:14:54编辑过]

TA的精华主题

TA的得分主题

发表于 2007-4-12 10:49 | 显示全部楼层
请解释这个公式:VLOOKUP($E$8,IF({1,0},$E$3:$E$6,C3:C6),2,1)

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-12 13:37 | 显示全部楼层
QUOTE:
以下是引用jefflee77在2007-4-12 10:49:58的发言:
请解释这个公式:VLOOKUP($E$8,IF({1,0},$E$3:$E$6,C3:C6),2,1)

请参看本帖首页山菊花版主的解释链接:

4、IF({1,0},……)公式的解释

QUOTE:

TA的精华主题

TA的得分主题

发表于 2007-4-23 13:20 | 显示全部楼层
为什么公式 =sum(--(A1:A10>5)) 要用“--”,而第二个公式 =sum((A1:A10>2)*(A1:A10<8)) 不用?

我是不是有点太愚笨?

不用解释了,自己想明白了。原来是字符型的数字经过运算后自动转为数字。我没理解错吧?:)
[此贴子已经被作者于2007-4-23 13:36:40编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-22 16:25 , Processed in 0.046486 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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