ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-11-29 10:27 | 显示全部楼层 |阅读模式
本帖最后由 delete_007 于 2014-2-26 16:22 编辑

总结帖见42楼
竞赛日期:2014-1-8至2014-2-18
目前最佳答案:评分1式(133/271)、评分2式(336)

题目说明:
  1.A1:F1为[2,15]的整数,G1单元格的真实值为0。
  2.从A1:F1中任选三个数字,判断其是否能形成三角形。
  3.A:F列显示所选的三个数字,G列显示三角形信息。
  4.必需列出所有可能的组合。(模拟结果见图)


答题要求:
  1.纯函数题,不允许定义名称、VBA、设置迭代等其他操作。
  2.所得结果顺序可与模拟结果不一致
  3.公式中只允许引用A1:G1单元格区域,不允许INDIRECT等间接引用(ROW和COLUMN函数不受此限制)。
  4.公式需通过2003版EXCEL验证。
  5.请注意容错。
  6.答题时请注明你所选择的答题方式,如(评分1式)


评分:
  1.A2公式向右向下填充至F31或A2:F31多单元格数组公式(公式一)
    G2公式向下填充至G31或G2:G31多单元格数组公式(公式二)
      公式一(含=)长度小于140字符得1分
      公式二(含=)长度小于290字符得1分
  2.A2公式向右向下填充至G31或A2:G31多单元格数组公式(公式三)
      公式三(含=)长度小于380字符3分起评,精彩答案可评4分
  3.上述两种答题方式任选其一,错答、多答均不得分,请量力而行谨慎选择。


提示:
  1.海伦公式
  2.[第98期]购买玩具




总结帖见42楼
单选投票, 共有 25 人参与投票
您所在的用户组没有投票权限

本帖子中包含更多资源

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

x

点评

A:F 列显示所选的三个数字必须是文本型还是数值型,还是不限?  发表于 2014-1-12 19:38
好象字符要求提高了?  发表于 2014-1-9 12:32

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-1-8 19:10 | 显示全部楼层
本帖最后由 CheryBTL 于 2014-1-10 18:56 编辑

题目要求改了。。。。晕
那就先选择评分一:
公式一:正好139字符(A2:F31区域数组)
  1. =IF(ROW()>21,"",IF(-1^INT(SMALL((MMULT(N(-1^INT(ROW(1:99)*2/2^COLUMN())<0),ROW(1:6)^0)<>3)/1%+ROW(1:99),ROW()-1)*2/2^COLUMN())<0,A1:F1,""))
复制代码
公式二:256字符(G2下拉)
  1. =TEXT(PRODUCT(-TEXT(MMULT(LARGE((-1^INT(SMALL({1;7;11;13;14;19;21;22;25;26;28;35;37;38;41;42;44;49;50;52;56},1+(ROW()<22)*ROW(A1))/2^{0,1,2,3,4,5})<0)*A$1:F$1,{1,2,3}),{1,1,1,-1;1,1,-1,1;1,-1,1,1}),"0;!0;0"))^0.5/4+(1-99^(ROW()>21)),"三角形面积为#.0??;;不能形成三角形")
复制代码
==============================================================
补充自己看的答案:340字符(A2:G31区域数组)
  1. =IF(ROW()>21,"",IF(COLUMN()<7,IF(-1^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())<0,A1:F1,""),TEXT(PRODUCT(SUM(INDIRECT("RC[-"&ROW(1:6)&"]",)),--TEXT(SUM(N(INDIRECT("RC[-"&{6,5,4,3,2,1}&"]",)))-2*LARGE(N(INDIRECT("RC[-"&{6,5,4,3,2,1}&"]",)),{1,2,3}),"0;!0;0"))^0.5/4,"三角形面积为#.0??;;不能形成三角形")))
复制代码

点评

这种手动拼出来的常量数组,局限性较大。  发表于 2014-1-9 12:40

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-1-8 21:46 | 显示全部楼层
本帖最后由 qy1219no2 于 2014-1-13 11:14 编辑

评分1.

A2:F31多单元格数组公式,135字符
  1. =IF(SUBSTITUTE(LARGE((ROW()-3*INT((ROW()-2)/4)+COLUMN()<7)*(677-11*ROW()-67*INT((ROW()-2)/4)-COLUMN()),ROW()-1),COLUMN(),)%>1,A1:F1,"")
复制代码
G2:G31多单元格数组公式,252字符
  1. =IF(SUM(IF(1,OFFSET(A1:F1,ROW()-1,)))>2*MAX(IF(1,OFFSET(A1:F1,ROW()-1,))),TEXT(PRODUCT(SUM(IF(1,OFFSET(A1:F1,ROW()-1,)))/2-IF({1,1,1,0},LARGE(IF(1,OFFSET(A1:F1,ROW()-1,)),{1,2,3})))^0.5,"三角形面积为0.0??"),IF(SUM(IF(1,OFFSET(A1:F1,ROW()-1,))),"不能形成三角形",""))
复制代码
第二个公式也算间接引用吗?

评分2还是不行,看来还得再琢磨琢磨!

补充内容 (2014-2-18 15:58):
帖子编辑不了了??

点评

是的,其实你还是用了A2:F31的数据。  发表于 2014-2-8 09:35

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-1-8 23:45 | 显示全部楼层
本帖最后由 delete_007 于 2014-1-10 17:21 编辑

评分2式
A2:G31多单元格数组公式
  1. =TEXT(INDEX(10^MMULT(LOG(TEXT(MMULT((MOD(ROW(1:64)/2^COLUMN()*2,2)<1)*A1:G1,-1^(ROW(1:7)=COLUMN(A:H))),"[>0];999")),-1^(ROW(1:8)>6))^0.5/4*(A1:G1=0)+(MOD(ROW(1:64)/2^COLUMN()*2,2)<1)*A1:G1,LARGE((MMULT(INT(MOD(ROW(1:64)/2^COLUMN()*2,2)),ROW(1:7)^0)=3)*ROW(1:64),ROW()-1),COLUMN()),IF(ROW()>COMBIN(6,3)+1,"",IF(A1:G1,"0;;","[<99]三角形面积为.0##;不能形成三角形")))
复制代码
含等号350``

没试过不按LZ的其他顺序的是否会少点``

久了
而且公式太长也不怎么想去试了``
  1. =TEXT(INDEX(10^MMULT(LOG(TEXT(MMULT((MOD(ROW(1:140)/2^COLUMN()*2,2)<1)*A1:G1,-1^(ROW(1:7)=COLUMN(A:H))),"[>0];9999")),-1^(ROW(1:8)>6))^0.5/4*(A1:G1=0)+(MOD(ROW(1:140)/2^COLUMN()*2,2)<1)*A1:G1,LARGE((MMULT(INT(MOD(ROW(1:67)/2^COLUMN()*2,2)),ROW(1:7)^0)=3)*ROW(2:68)+63,ROW()),COLUMN()),IF(A1:G1,"0;;","[<99]三角形面积为.0##;[<2E7]不能形成三角形;"))
复制代码


评分

5

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-1-9 14:08 | 显示全部楼层
本帖最后由 sharprain 于 2014-1-22 15:30 编辑

先写公式1吧,呵呵
A2:F31多单元格数组公式:
  1. =IF(MOD(SMALL(IF(MMULT(INT(MOD(ROW(1:64)/2^COLUMN()*2,2)),ROW(1:6)^0)=3,ROW(1:64),64),ROW()-1)/2^COLUMN()*2,2)>=1,A$1:F$1,"")
复制代码

点评

03版本DEC2BIN不支持数组。  发表于 2014-1-9 14:46

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-1-9 14:59 | 显示全部楼层
本帖最后由 wlc5201130 于 2014-1-16 14:19 编辑

评分1式:需要加载宏分析

本来是用这个的=IF(COUNT(0/-(MID(DEC2BIN(LARGE((SUBSTITUTE(DEC2BIN(ROW($1:$63),6),1,)="000")*ROW($1:$63),ROW(A1)),6),COLUMN(A1),1))),A$1,"")
后来到03版本中测试了下。好像数组不行。没有办法就直接把出现的肯能就直接填上去了,版主没说不能这样用吧。应该符合要求吧。
A2=IF(COUNT(0/-MID(DEC2BIN(SMALL({7;11;13;14;19;21;22;25;26;28;35;37;38;41;42;44;49;50;52;56},ROW(A1)),6),7-COLUMN(A1),1)),A$1,"")
下拉128字符

上面由于手动填写数组,为赖皮行为,现改为
133字符
A2=IF(MOD(MIN(ROW(A1),20),2)-MID(TEXT(LARGE((SUBSTITUTE(ROW(1:11100),0,)="111")*ROW(1:11100),INT(ROW()/2)),"000000"),COLUMN(),1),A$1,"")
数组,右拉下拉,不知这个可算赖皮行为。主要是针对MIN(ROW(A1),20)这个公式。

要是这个同样属于赖皮行为的话,就用这个
137字符
A2=IF(MOD(ROW(),2)*(SUM(1:1)<>0)-MID(TEXT(LARGE((SUBSTITUTE(ROW(1:11100),0,)="111")*ROW(1:11100),INT(ROW()/2)),"000000"),COLUMN(),1),A$1,"")
数组右拉下拉


评分2式:
245字符
G2=IF(SUM(OFFSET(A$1,MIN(ROW(A1)),,,6))>2*MAX(OFFSET(A$1,MIN(ROW(A1)),,,6)),"三角形面积为"&ROUND(SQRT(PRODUCT(SUM(OFFSET(A$1,MIN(ROW(A1)),,,6))/2-LARGE(IF({1;0},OFFSET(A$1,ROW(A1),,,6),),{1,2,3,4}))),3),IF(SUM(OFFSET(A$1,MIN(ROW(A1)),,,6)),"不能形成三角形",""))
数组右拉下拉




点评

03版DEC2BIN不支持数组,另外手动列出常量数组属耍赖行为。  发表于 2014-1-9 18:29

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-1-10 17:25 | 显示全部楼层
本帖最后由 swyrlbq 于 2014-1-10 17:43 编辑

评分1式:
公式一
A2:F31
  1. =IF(1--1^INT(SMALL(IF(MMULT(1--1^INT(ROW(1:64)*2/2^COLUMN()),ROW(1:6)^0)=6,ROW(1:64),64),ROW()-1)*2/2^COLUMN()),A1:F1,"")
复制代码
公式二:
G2:G31
  1. =TEXT(MAX(PRODUCT(INDEX(MMULT(SMALL(ROW(1:64)/1%+(1+-1^INT(ROW(1:64)*2/2^COLUMN(A:F)))/2*A1:F1,6*ROW(1:64)-{0,1,2})-ROW(1:64)/1%,1-({2;3;4}={1,2,3,4})*2),LARGE(((MMULT(1+-1^INT(ROW(1:64)*2/2^COLUMN(A:F)),ROW(1:6)^0)=6)*ROW(1:64)),ROW()-1))),)^0.5/4-(ROW()>21),"三角形面积为.0##;;不能形成三角形")
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-1-13 17:05 | 显示全部楼层
只考虑了第三个公式,第一,第二不会,不知道可否算答题!

本帖子中包含更多资源

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

x

点评

直接把公式贴出来,不用上传附件。另外请不要多占楼层。  发表于 2014-1-13 19:04

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-1-14 17:27 | 显示全部楼层
评分1式
公式1:
a2:f31数组(按模拟结果顺序):
=IF(--MID(DEC2BIN(SMALL(IF(SUBSTITUTE(DEC2BIN(ROW(7:56)),0,)-111,64,ROW(7:56)),ROW(1:30)),7),8-COLUMN(),1),A1:F1,"")
a2:f31数组(乱序):
=IF(-MID(DEC2BIN(LARGE((SUBSTITUTE(DEC2BIN(ROW(7:56)),0,)="111")*ROW(7:56),ROW(1:30)),6),COLUMN(),1),A1:F1,"")

公式2:
暂时没搞定……

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-1-14 19:55 | 显示全部楼层
评分 2 式,A2 数组公式右拉下拉(358 Chars)
  1. =IF(ROW()>21,"",IF(A$1,IF(MOD(INT(SMALL({7;11;13;19;21;25;35;37;41;49}*{1,-1}+63,ROW()-1)/2^COLUMN()),2),A$1,""),TEXT(TEXT(PRODUCT(MMULT(SMALL(ROW($2:$21)/1%+(MOD({56;52;50;49;44;42;41;38;37;35;28;26;25;22;21;19;14;13;11;7},2^{1,2,3,4,5,6})<2^{0,1,2,3,4,5})*$A$1:$F$1,ROW()*6-{6,7,8})-ROW()/1%,50%-({1;2;3}={1,2,3,4}))),"[<0]\0")^50%,"三角形面积为.0##;;不能形成三角形")))
复制代码
评分1有更短的,不敢上了。

点评

如果这也能,{56;52;50;49;44;42;41;38;37;35;28;26;25;22;21;19;14;13;11;7},那公式长度能***缩短至270以内了!!!  发表于 2024-3-20 11:27
常量数组{56;52;50;……;11;7}是手动算出来的。  发表于 2014-1-15 08:32

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-21 17:01 , Processed in 0.058047 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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