excel函数问题

如图,求A列中物料编码不重复(区分大小写)的个数?答案:{=sum(1/MMULT(--EXACT(A2:A18,TRANSPOSE(A2:A18)),ROW(2:18)... 如图,求A列中物料编码不重复(区分大小写)的个数?
答案:
{=sum(1/MMULT(--EXACT(A2:A18,TRANSPOSE(A2:A18)),ROW(2:18)^0))}
求问:
1.“--"是什么意思?有什么用?很多函数里面都出现了这个
2.为什么后面有ROW(2:18)^0,这部分是什么意思?
3.前面用1/MMULT()是什么意思?
4.如果您方便直接把整个函数分析一遍吧,谢谢了。
展开
 我来答
热情的橘子醬8D544
2013-04-08 · TA获得超过6.9万个赞
知道大有可为答主
回答量:2.6万
采纳率:57%
帮助的人:9900万
展开全部
1.“--"是就是两个负号,也叫减负,数学上负负得正,结果还是原数。作用是将文本格式的数字转为数值,逻辑值转为数值1或0,以便函数进行数值运算。
2.后面ROW(2:18)^0,实际上是根据行数,得出一个与行数个数相同,由多个1组成的数组,即{1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1}。任何有理数的0次幂等于1,为了使公式简短,所以用这个公式。
3.前面用1/MMULT(),用1除以函数结果(函数MMULT结果是一个数组),得出这个数组各无素的倒数【假如数据区域有3个相同数字,数组中就有三个3,三个3的倒数就是三个1/3,它位的和就是1(表示有一个相同数据);假如有4个相同数据,就是4个1/4,和也是1。这样得出的结果是:相同数据只算一个。】
4.
TRANSPOSE(A2:A18)是将一列数据转为一行数据,以便MMULT运算;
--EXACT(A2:A18,TRANSPOSE(A2:A18)将两个数组进行比较,得出由1或0组成的17行17列数组(矩阵)。
追问
EXACT()里,后面A2:A18为何要转置成列呢?
比如EXACE(WORD,WORD)=TRUE,这里后面的那个WORD没说要竖过来啊。
追答
EXACT(A2:A18,A2:A18)只是A2跟A2、A3跟A3……A18跟A18分别比较一次,得出的是一个单列17行的TRUE数组,达不到比较作用。
将其中一组参数转置后,A2分别跟A2、A3、……、A18比较一次(可得出跟A2相同的个数);A3同样分别跟A2至A18各比较一次(得出跟A3相同的个数)……,使每个数据都跟各数比较一次,得出一个TRUE和FALSE组成的17*17的矩阵数组。
matador_ciao
2013-04-08 · TA获得超过1661个赞
知道小有建树答主
回答量:1828
采纳率:0%
帮助的人:1025万
展开全部
抢答,不介意吧?
函数的最终目的是求A2:A18中不重复的个数
excat()是比较括号中的俩字符串是否相同,因为牵扯到字母大小写,不能使用=判断
1.--是将布尔值,true和false转换为1 , 0
2.row(2:18)^0生成17行的数组{1,1,1,1……1}
3.mmult()矩阵相乘,前面通过分别判断B2、B3、。。。B18是否与B2:B18相同
得到17行17列的由1和0组成的矩阵;
4. 3中的矩阵和2中的矩阵相乘得到以每一行和构成的17行1列的数组(举例说明,假设一组数{1,2,2,3},统计每个数的个数,分别为1,2,2,1 那么要统计不重复的个数也就是1+1/2+1/2+1=3
追问
EXACT()里,后面A2:A18为何要转置成列呢?
比如EXACE(WORD,WORD)=TRUE,这里后面的那个WORD没说要竖过来啊。
追答

转置为了针对A2到A18的每个值分别和这一组数判断是否相同

没有转置的情况下,excact(word,word)结果还是17个,没有判断的意义

sum(1/countif(a2:a18,a2:a18))在这里也失效了(字母大小写的缘故COUNTIF 判断时,如A001B1003和a001b1003按相同对待),也只好用矩阵的办法

类似的可以看到图解

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wo1987like
2013-04-08 · TA获得超过370个赞
知道小有建树答主
回答量:843
采纳率:100%
帮助的人:300万
展开全部
不重复统计你可以用这个函数=SUM(1/COUNTIF(A1:A18,A1:A18)) 也是数组公式 ctrl+shift+enter结束 你这个公式的话
--就是数学预案算符号负负得正,一般用来把文本格式数字转化为 数学数字,这里的exact函数是比较两组数字是否一样,如果一样就返回true,否则返回false,在excel中true返回1,false返回0,ROW(2:18)^0创造数一组18行等于1的数组,用来和exact的出来的数组相乘也就是mmult函数,然后用1除该数组的每个数相加,得到不重复数据,这个原理来自数学分析,举个列子,不管这个数组里的某个数有多少个重复,用1相除后再相加 就是1,假如 你这组数据里的a001b101出现了4次,那么用数组算出来 的就是1/4,1/4,1/4,1/4,相加起来就是=1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柔软的Bp
科技发烧友

2013-04-08 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:3万
采纳率:67%
帮助的人:8736万
展开全部
=SUMPRODUCT(1/COUNTIF(A2:A18,A2:A18))
数组, 这个简单点
统计A2:A18分别在A2:A18里的个数,然后用1来除,不重复的,商为1,重复的就是,1/N,(N表示重复的个数),最后将1除的所有的商,汇总就是结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式