ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [第101期_1]三角形面积排列之二[已总结]

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2014-1-18 19:18 | 显示全部楼层
这个公式参照购买玩具写出来很久了,一直没想到办法简化,厚着脸皮贴上去留个记号
  1. =IF(INDEX(MOD(INT(ROW($1:$64)/2^COLUMN()*2),2),SMALL(IF(MMULT(MOD(INT(ROW($1:$64)/2^COLUMN()*2),2),ROW(1:6)^0)=3,ROW(1:64),64),ROW()-1),COLUMN()),A1:F1,"")
复制代码
A2:F31多单元格数组

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-1-23 15:50 | 显示全部楼层
本帖最后由 delete_007 于 2014-1-28 18:59 编辑

评分1式:
公式一,暴力解题法,A2:F31多单元格数组,130字符:
  1. =IF(-LEFT(RIGHT(0&DEC2BIN({56;52;44;28;50;42;26;38;22;14;49;41;25;37;21;13;35;19;11;7;0;0;0;0;0;0;0;0;0;0}),7-COLUMN())),A1:F1,"")
复制代码
  1. =IF("1"=MID(LARGE((MMULT(--(0&MID(DEC2BIN(ROW(1:63)),COLUMN(),1)),ROW(1:6)^0)=3)*DEC2BIN(ROW(1:63)),ROW()-1)%%%,COLUMN()+2,1),A1:F1,"")
复制代码

点评

这个常量数组有点就题论题了,如果我要求10个数字的组合呢?或者我要求在A2:F64录入公式呢?  发表于 2014-1-23 17:12

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-1-23 15:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 delete_007 于 2014-2-20 10:07 编辑

公式一:
方法一:直接构造6取3的组合数组6*20。
选定a2:f21,多单元格数组公式,由组合公式可知有20个组合(即6列20行)(为什么要下拉到31?不下拉到64或其他?)
(任意选定连续的6列20行即可,163字符)
=A1:F1*IF(ROW(1:20)<3,{0,0,0,1,1,1;1,1,1,0,0,0},IF(IF(ROW(1:20)>12,{0,0,0,1,1,1},{1,1,1,0,0,0}),INT(ROW(1:20)/3)<>COLUMN(A:F),MOD(ROW(1:20),3)=MOD(COLUMN(A:F),3)))

=A1:F1*IF(ROW(1:20)<3,({1;0}-(COLUMN(A:F)>3))^2,IF(IF(ROW(1:20)>12,COLUMN(A:F)>3,COLUMN(A:F)<4),INT((ROW(1:20))/3)<>COLUMN(A:F),MOD(ROW(1:20),3)=MOD(COLUMN(A:F),3)))

需要选定a2:f21:
=A1:F1*IF(ROW()<4,{0,0,0,1,1,1;1,1,1,0,0,0},IF(IF(ROW()>12,{0,0,0,1,1,1},{1,1,1,0,0,0}),INT(ROW(1:20)/3)<>COLUMN(),MOD(ROW(),3)=MOD(COLUMN(),3)))

结构不变,改变常数组形态,选定a2:f21,多单元格数组公式,设成不显示零值(138字符):
=A1:F1*IF(ROW()<4,ROW()=INT(COLUMN(F:K)/3),IF(IF(ROW()>12,COLUMN()>3,COLUMN()<4),INT(ROW(1:20)/3)<>COLUMN(),MOD(ROW(),3)=MOD(COLUMN(),3)))
还可改进成136字符的表达式:
=A1:F1*IF(ROW()<4,({1;0}-(COLUMN()>3))^2,IF(IF(ROW()>12,COLUMN()>3,COLUMN()<4),INT((ROW()-1)/3)<>COLUMN(),MOD(ROW(),3)=MOD(COLUMN(),3)))

方法二:
参考6个元素的全组合表达式:MOD(INT(ROW(1:64)*2/2^COLUMN(A:F)),2)
选定a2:f31,多单元格数组公式:
=TEXT(MID(LARGE(MMULT(A1:F1+10%^COLUMN(A1:F1),MOD(INT(COLUMN($A:$BM)*2/2^ROW($1:$6)),2))*(MMULT(COLUMN(A:F)^0,MOD(INT(COLUMN($A:$BM)*2/2^ROW($1:$6)),2))=3),ROW(1:30)),COLUMN()+3,1),A1:G1&";;")

可精简成:
=TEXT(INDEX(MOD(INT(ROW(1:64)*2/2^COLUMN(A:F)),2),SMALL(IF(MMULT(MOD(INT(ROW(1:64)*2/2^COLUMN(A:F)),2),ROW(1:6)^0)=3,ROW(1:64),64),ROW()-1),COLUMN()),A1:F1&";;")

如果设置不显示0值(149字符):
=INDEX(MOD(INT(ROW(1:64)*2/2^COLUMN(A:F)),2),SMALL(IF(MMULT(MOD(INT(ROW(1:64)*2/2^COLUMN(A:F)),2),ROW(1:6)^0)=3,ROW(1:64),64),ROW()-1),COLUMN())*A1:F1


对于公式二,先发一个直白的公式,不合参赛的要求,
=IF(LARGE(A2:F2,1)<LARGE(A2:F2,2)+LARGE(A2:F2,3),"三角形的面积为"&((SUM(A2:F2)/2)*(SUM(A2:F2)/2-LARGE(A2:F2,1))*(SUM(A2:F2)/2-LARGE(A2:F2,2))*(SUM(A2:F2)/2-LARGE(A2:F2,3)))^0.5,"不能构成三角形")


公式一选定a2:f21多单元格数组公式(136字符)
=A1:F1*IF(ROW()<4,({1;0}-(COLUMN()>3))^2,IF(IF(ROW()>12,COLUMN()>3,COLUMN()<4),INT((ROW()-1)/3)<>COLUMN(),MOD(ROW(),3)=MOD(COLUMN(),3)))

公式二:选定g2:g21多单元格数组公式(155字符)
=TEXT(TEXT(PRODUCT(SMALL(INDEX(MMULT(OFFSET(A1,1,,20,6),-1^(ROW(1:6)=COLUMN(A:G))),ROW(1:20),),COLUMN(A:D))),"0;!0;!0")^0.5/4,"三角形的面积是0.0000;[=0]!不能构成三角形")

补充内容 (2014-2-11 16:34):
上式再减成151字符
=TEXT(TEXT(PRODUCT(SMALL(INDEX(MMULT(OFFSET(A1,1,,20,6),-1^(ROW(1:6)=COLUMN(A:G))),ROW(1:20),),{1,2,3,4})),"0;!0;!0")^0.5/4,"三角形的面积是0.00;[=0]!不能构成三角形")
公式一方法一:公式只能填充至F21,同时有多余0值显示,不满足要求
公式一方法二:C列10显示成了11
公式二:只能填充至G21,没有做容错处理。公式亦间接引用了A2:F31内容,不满足要求
          ——delete_007

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

点评

下次答竞赛题,不要回复这么多公式,你让我用哪个公式给你评分?  发表于 2014-2-20 10:01

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-1-28 06:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
公式一
A2=IF(-MID(DEC2BIN(CHOOSE(MIN(ROW(A1),21),7,11,13,14,19,21,22,25,26,28,35,37,38,41,42,44,49,50,52,56,0),6),7-COLUMN(A1),1),A$1,"")

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-1-28 16:12 | 显示全部楼层

评分一式

本帖最后由 丢丢表格 于 2014-2-7 09:02 编辑

A2:F31 区域数组
  1. =TEXT(MOD(INT(LARGE((MMULT(MOD(INT(ROW($1:$63)/2^{0,1,2,3,4,5}),2),{1;1;1;1;1;1})=3)*ROW($1:$63),ROW(1:30))/2^{0,1,2,3,4,5}),2)*A1:F1,"0;;")
复制代码
G2
  1. =LOOKUP("座",IF({1,0},"不能形成三角形",TEXT(PRODUCT(MMULT({1,1,1;1,1,-1;1,-1,1;-1,1,1}/2,MOD(LARGE((MMULT(MOD(INT(ROW($1:$63)/2^{0,1,2,3,4,5}),2),{1;1;1;1;1;1})=3)*(ROW($1:$63)*100+MOD(INT(ROW($1:$63)/2^{0,1,2,3,4,5}),2)*A$1:F$1),ROW()*6+{1;2;3}-12),100)))^0.5,"三角形面积为0.0##;;"&IF(ROW()>21,"","不能形成三角形"))))
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-1-30 08:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
评分1式。
公式一(A2公式向右向下填充至F31):
  1. =IF(OR(COLUMN()=--MID("123124125126134135136145146156234235236245246256345346356456"&REPT(0,30),3*ROW()-{5,4,3},1)),A$1,"")
复制代码
公式二(G2公式向下填充至G31):
  1. =TEXT(SQRT(PRODUCT(SUBTOTAL(9,OFFSET(A$1:F$1,ROW()-1,))/2-LARGE(CHOOSE({1;2},OFFSET(A$1:F$1,ROW()-1,),),{1,2,3,4}))*IF(SUM(LARGE(CHOOSE({1;2},OFFSET(A$1:F$1,ROW()-1,),),{1,2,3})*{-1,1,1})>0,1,))-(COUNTIF(OFFSET(A$1:F$1,ROW()-1,),"")=6),"三角形的面积为0.0##;;不能形成三角形")
复制代码

补充内容 (2014-2-15 16:47):
出题请表述清楚,下面的row又算不算?评分1式(A2:F31多单元格数组公式):
公式一:=IF(INT(MOD(LARGE((MMULT(MOD(INT(ROW(1:63)/2^{5,4,3,2,1,0}),2),ROW(1:6)^0)=3)*ROW(1:63),ROW()-1)/2^{5,4,3,2,1,0},2)),A1:F

补充内容 (2014-2-15 16:48):
=IF(INT(MOD(LARGE((MMULT(MOD(INT(ROW(1:63)/2^{5,4,3,2,1,0}),2),ROW(1:6)^0)=3)*ROW(1:63),ROW()-1)/2^{5,4,3,2,1,0},2)),A1:F1,"")

点评

公式一,通过生硬的拼凑达到目的,不具有通用性。公式二通过OFFSET间接引用了规定外的单元格区域,不满足要求。  发表于 2014-2-11 10:18

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-2-3 17:56 | 显示全部楼层
回答:
  评分1式:
  公式一:(回车结束)(含空格172字)
  =IF(--MID(1000000+ LARGE(--TEXT(MMULT({1,1,1,1,1,1}*10^6+10^{5,4,3,2,1,0},--(MOD(COLUMN($A:$BK)/2^ROW($1:$6)*2,2)>=1)),"[<3e6]!0;[>=4e6]!0;0"),ROW(A1)),COLUMN(B1),1),A$1,0)

  公式二:(三键结束,只选单元格,不选区域)(含空格144字)
  =IF(PRODUCT((SUM(A2:F2)/2-A2:F2>0)*1),"三角形面积为"&TEXT((PRODUCT(SUM(A2:F2)/2-A2:F2)/(SUM(A2:F2)/2)^2)^0.5,"0.0##"),IF(SUM(A2:F2)/2>0,"不能形成三角形",""))

  附件如下:
  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

点评

公式二引用了规定以外的单元格区域,不满足要求。  发表于 2014-2-11 10:16

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-2-14 07:32 | 显示全部楼层
评分二式:
  1. =TEXT((PRODUCT(MOD(MMULT(-1^({1;2;3;4}={2,3,4}),LARGE((MMULT((MOD(ROW($1:$62)/2^COLUMN($A:$F)*2,2)<1)*1,ROW(1:6)^0)=3)*(ROW(1:62)*9-COLUMN(A:F)*(A$1>0))/1%%+(MOD(ROW($1:$62)/2^COLUMN($A:$F)*2,2)<1)*$A$1:$F$1,IF(A$1,COLUMN()+{0;0;0},{1;2;3})+ROW()*6-12)),500))/16)^0.5,IF(ROW()>COMBIN(6,3)+1,"",IF(A$1,IF(A$1=10,"1!0",A$1)&";;","[>99]不能形成三角形;[>1]三角形的面积为.0##;不能形成三角形")))
复制代码

点评

7版最近工作很忙,你来总结吧。呵呵  发表于 2014-2-23 12:22

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-2-14 16:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
评分2式
A2单元格
  1. =IF(A$1=0,IF(SUMIF($A2:$F2,">0")=0,"",TEXT(IFERROR(SQRT(SUMIF($A2:$F2,">0")/2*PRODUCT(IFERROR(SUMIF($A2:$F2,">0")/2-(--$A2:$F2),1))),0),"[>0]三角形面积为#0.0##;不能形成三角形")),IFERROR(--TEXT(MOD(INT(SMALL({7,11,13,14,19,21,22,25,26,28,35,37,38,41,42,44,49,50,52,56},ROW()-1)*2/2^COLUMN()),2)*A$1,"##"),""))
复制代码
三键、向右向下填充至G31~

点评

评分见后,下次请勿重复占楼。  发表于 2014-2-26 16:29

TA的精华主题

TA的得分主题

发表于 2014-2-14 17:44 | 显示全部楼层
公式一:=MID(DEC2BIN(SMALL(IF(MMULT(LEN(SUBSTITUTE(DEC2BIN(ROW(1:63)),{2,1},)),{1;-1})=3,ROW(1:63),64),ROW()-1),7),{7,6,5,4,3,2},1)*A1:F1
129个字符,在使用之前要在视图里面设定0值不可见,或A2:G32单元格格式为 0;;;
公式一是按楼主的顺序出的,如果不按楼主的顺序出,还可以再次简化。
公式二:=IF((ROW()-2)<COMBIN(6,3),TEXT(IF(ISERROR(SQRT(PRODUCT(SUM(A3:F3)/2,SUM(A3:F3)/2-LARGE(A3:F3,{1,2,3})))),0,SQRT(PRODUCT(SUM(A3:F3)/2,SUM(A3:F3)/2-LARGE(A3:F3,{1,2,3})))),"三角形面积为0.0??;;不能形成三角形"),"")
197字符。
如果公式二不要求兼容2003,可以用IFERROR公式,如下,COMBNIN(6,3)也可以直接为22,也可以简化为118字符,如下:
=IF(ROW()<22,TEXT(IFERROR(SQRT(PRODUCT(SUM(A2:F2)/2,SUM(A2:F2)/2-LARGE(A2:F2,{1,2,3}))),0),"三角形面积为0.0??;;不能形成三角形"),"")

请见附件。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-4-27 02:58 , Processed in 0.049164 second(s), 23 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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