Excel精英培训网

 找回密码
 注册
查看: 10072|回复: 17

MM函数练手题

  [复制链接]
发表于 2012-6-7 10:10 | 显示全部楼层 |阅读模式
本帖最后由 那么的帅 于 2012-6-14 08:43 编辑

以前论坛会员提出的问题
公式需要用到MMULT函数,非内存数组公式。
注明不同题目,提交公式即可(提交附件的将被忽略

题目1
MM练手题01:根据三列条件提取整行数据.rar (4.42 KB, 下载次数: 167)
发表于 2012-6-7 10:14 | 显示全部楼层
回复

使用道具 举报

发表于 2012-6-7 10:50 | 显示全部楼层
本帖最后由 CheryBTL 于 2012-6-7 20:55 编辑

感觉这几个好像不是MM的练习题:
第一题:T1:AJ1区域数组:
  1. =INDEX(A$1:Q20,SMALL((MMULT(N(A$1:C20<>""),{1;1;1})<3)/1%+ROW($1:20),ROW()),COLUMN(A:Q))&""
复制代码
  1. =INDEX(A:Q,SMALL((MMULT(N(A$1:C20<>""),{1;1;1})<3)/1%+ROW($1:20),ROW()),COLUMN(A:Q))&""
复制代码
第二题简化后102字符:
  1. =MATCH(1,0/(C2:C100=60))-MATCH(1,0/(MMULT(N(OFFSET(C1,,,MATCH(1,0/(C2:C100=60)))={0,1,2}),{1;1;1})=0))
复制代码
回复

使用道具 举报

发表于 2012-6-7 11:11 | 显示全部楼层
本帖最后由 wjc2090742 于 2012-6-7 21:31 编辑

第1题数组公式不容错右拉下拉
  1. =INDEX(A:A,SMALL(IF(MMULT(N($A$1:$C$20<>""),{1;1;1})=3,ROW($1:$20)),ROW(A1)))&""
复制代码
第2题数组公式右拉
  1. =-LOOKUP(,IF((C1:C100-1)^2>1,ROW(2:101)-MATCH(1,0/(C1:C100=60))))
复制代码
  1. =-LOOKUP(,IF(MMULT(N(C1:C100<>{0,1,2}),{1;1;1})=3,ROW(2:101)-MATCH(1,0/(C1:C100=60))))
复制代码
容错的,60上方全部为0,1,2时可以返回正确结果,数组公式右拉。
  1. =-MAX(-TEXT(((C1:C100-1)^2>1)*ROW(1:100)-MATCH(1,0/(C1:C100=60)),"1!0!0;0"))-1
复制代码

评分

参与人数 1 +9 收起 理由
5blessyou + 9 第二题公式太棒了!

查看全部评分

回复

使用道具 举报

发表于 2012-6-7 11:23 | 显示全部楼层
第一题
  1. =MATCH(1,0/(60=C$1:C$100))-MAX((IF(MMULT(N(C$1:C$100={0,1,2}),{1;1;1})=0,ROW(1:100))<MATCH(1,0/(60=C$1:C$100)))*ROW(1:100))-1
复制代码
第二题
  1. =INDEX(A$1:Q$21,SMALL(IF(MMULT(N(A$1:C$20<>""),{1;1;1})=3,ROW($1:$20),21),ROW(A1)),COLUMN(A:Q))&""
复制代码
回复

使用道具 举报

发表于 2012-6-7 15:11 | 显示全部楼层
  1. =INDEX(A:A,SMALL(IF(MMULT(($A$1:$C$20>0)*1,ROW($1:$3)^0)=3,ROW($1:$20),99),ROW(A1)))&""
复制代码
做一个先交一个吧
回复

使用道具 举报

发表于 2012-6-7 19:07 | 显示全部楼层
  1. =IF(SMALL(IF(MMULT(($A$1:$C$20>0)*1,{1;1;1})=3,ROW($1:$20),99),ROW($A1))<99,INDEX(A$1:A$20,SMALL(IF(MMULT(($A$1:$C$20>0)*1,{1;1;1})=3,ROW($1:$20),99),ROW($A1)))&"","")
复制代码
右拉下拉公式
回复

使用道具 举报

发表于 2012-6-7 22:44 | 显示全部楼层
1
  1. =INDEX(A:A,SMALL((MMULT(N($A$1:$C$20=""),{1;1;1})>0)*99+ROW($1:$20),ROW()))T1右拉下拉
复制代码
2.C103右拉
  1. =MATCH(,MMULT(--(N(OFFSET(C1,MAX((C1:C100=60)*ROW(1:100))-ROW(INDIRECT("2:"&MAX((C1:C100=60)*ROW(1:100)))),))={0,1,2}),{1;1;1}),)-1
复制代码
回复

使用道具 举报

发表于 2012-6-9 08:34 | 显示全部楼层
  1. =INDEX(A:A,SMALL(IF(MMULT(N($A$1:$C$20<>""),{1;1;1})=3,ROW($1:$20),99),ROW(A1)))&""
复制代码
  1. =MATCH(1,0/(C1:C100=60))-MATCH(1,0/((1-MMULT(N(C1:C100={0,1,2}),{1;1;1}))*(ROW(1:100)<MATCH(1,0/(C1:C100=60)))))-1
复制代码
实在搞不清楚如何用MM合并,先用常规解法解了再说,未精简。
回复

使用道具 举报

发表于 2012-6-10 10:37 | 显示全部楼层
题一:
=TEXT(INDEX(A1:Q20,MATCH(LARGE((MMULT((A1:C20<>"")*1,{1;1;1})=3)*10^(20-ROW(A1:A20)),ROW(INDIRECT("1:"&SUM(((MMULT((A1:C20<>"")*1,{1;1;1})=3)*10^(20-ROW(A1:A20))>0)*1)))),(MMULT((A1:C20<>"")*1,{1;1;1})=3)*10^(20-ROW(A1:A20)),0),COLUMN(A:T)),"#;;")
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 23:48 , Processed in 0.724414 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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