ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] 【71期】Piny系列-十二生肖大亂鬥

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-3-6 21:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
哇,这思路忒重要了……
从三百多,变为232,再接着修改一下,214字符:
  1. =IF(OR(FIND(A2:C2,"牛虎兔龍蛇馬羊猴雞狗豬鼠")=TRANSPOSE(FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬"))),REPLACE(MID("鼠牛虎兔龍蛇馬羊猴雞狗豬鼠",RIGHT(MAX(FREQUENCY(FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬鼠",{1;2})-{0;1},ROW($1:$11))+ROW($1:$12)%),2),2),2,,"的下一個生肖是"),"無相鄰")
复制代码
--

----------------------------------------------------------------------
换一个思路,200字符,回头再想……要是能把IF()去掉就完美啦!!
  1. =MID(TEXT("的下一個生肖是","鼠@牛@虎@兔@龍@蛇@馬@羊@猴@雞@狗@豬@鼠@無相鄰"),RIGHT(TEXT(MAX(FREQUENCY(IF(MATCH(A2:C2,A2:C2,)={1,2,3},FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬鼠",{1;2})-{0;1}),ROW($1:$11))+ROW($1:$12)%),"[<2]14;.00"),2)*8-7,9)
复制代码

[ 本帖最后由 zzmxy 于 2011-3-10 00:41 编辑 ]

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-3-9 13:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=SUBSTITUTE(MID("鼠1牛1虎1兔1龍1蛇1馬1羊1猴1雞1狗1豬1鼠111無相鄰",2*MATCH(2,MMULT(--(FIND(MID("鼠牛虎兔龍蛇馬羊猴雞狗豬鼠1@",ROW($1:$15)+{0,1},1),A2&B2&C2&"@鼠牛虎兔龍蛇馬羊猴雞狗豬1")<5),{1;1}),)-1,3),1,"的下一個生肖是")

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-3-10 17:50 | 显示全部楼层

回复 1楼 piny 的帖子

字符远远超了。
=IF(AND(MAX(--FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬"))=12,MIN(--FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬"))=1),"豬的下一個生肖是鼠",IF(MAX(--FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬"))=LARGE(--FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬"),2)+1,MID("鼠牛虎兔龍蛇馬羊猴雞狗豬",LARGE(--FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬"),2),1)&"的下一個生肖是"&MID("鼠牛虎兔龍蛇馬羊猴雞狗豬",MAX(--FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬")),1),IF(MIN(--FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬"))+1=LARGE(--FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬"),2),MID("鼠牛虎兔龍蛇馬羊猴雞狗豬",MIN(--FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬")),1)&"的下一個生肖是"&MID("鼠牛虎兔龍蛇馬羊猴雞狗豬",LARGE(--FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬"),2),1),"無相鄰")))数组公式

本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-3-13 10:01 | 显示全部楼层
=MID(SUBSTITUTE("鼠 牛 虎 兔 龍 蛇 馬 羊 猴 雞 狗 豬 鼠  '無相鄰"," ","的下一個生肖是"),MIN(FIND(A2:C2&TRANSPOSE(A2:C2),"鼠牛虎兔龍蛇馬羊猴雞狗豬鼠 "&A2&B2&C2&A2&A2&C2&C2&B2&B2&A2))*8-7,9)

又想了一下,终于整了一个没有IF,*号的,135个字符
=MID(TEXT(MID("鼠豬狗雞猴羊馬蛇龍兔虎牛鼠0",LOOKUP(99,FIND(MID("00"&A2&B2&C2&B2&A2&C2&A2,ROW($1:$8),2),"鼠豬狗雞猴羊馬蛇龍兔虎牛鼠00")),2)," 無相鄰;@的下一個生肖是@"),2,9)

[ 本帖最后由 chenhh803 于 2011-3-16 09:53 编辑 ]

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-3-18 15:24 | 显示全部楼层

回复 1楼 piny 的帖子

今天刚看到,先发一个能解决的,但不符合竞赛的要求,字符数136个,(2007中的公式),如果晚上有时间再研究。


=IFERROR(LOOKUP(,0/((MMULT(--(A2:C2=$C$2:$C$13),{1;1;1})*(MMULT(--(A2:C2=$C$3:$C$14),{1;1;1})))),$C$2:$C$14&"的下一個生肖是"&$C$3:$C$15),"無相鄰")
(数组公式)

在03中能用的公式:
=IF(SUM(MMULT(--(A2:C2=$C$2:$C$13),{1;1;1})*MMULT(--(A2:C2=$C$3:$C$14),{1;1;1})),LOOKUP(,0/((MMULT(--(A2:C2=$C$2:$C$13),{1;1;1})*(MMULT(--(A2:C2=$C$3:$C$14),{1;1;1})))),$C$2:$C$14&"的下一個生肖是"&$C$3:$C$15),"無相鄰")
(数组公式)206字符。

如果只能引用A2、B2、C2单元格的话,用下面的公式:(216个字符)
=INDEX(IF({1,1,1,0},A2:C2&"的下一個生肖是"&MID("鼠牛虎兔龍蛇馬羊猴雞狗豬鼠",FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬")+1,1),"無相鄰"),,MOD(MAX((MMULT({1,1,1},--(TRANSPOSE(A2:C2)=MID("鼠牛虎兔龍蛇馬羊猴雞狗豬鼠",FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬")+1,1)))>0)*COLUMN(A:C))+3,4)+1)

已经过测试。

[ 本帖最后由 lhx120824 于 2011-3-19 14:52 编辑 ]

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-3-18 19:11 | 显示全部楼层
想了N久,实在想不出130字符的公式。
就随便想了两个公式
177字符普通公式
=INDEX(MID("豬狗雞猴羊馬蛇龍兔虎牛鼠",ROW($1:$13),1)&TEXT(MID("鼠豬狗雞猴羊馬蛇龍兔虎牛1",ROW($1:$13),1),"無相鄰;的下一個生肖是@"),14+LOOKUP(,-FIND(MID(A2&B2&C2&B2&A2&C2&A2,{8,1,2,3,4,5,6},2),"0鼠牛虎兔龍蛇馬羊猴雞狗豬鼠")))
154字符数组公式
=SUBSTITUTE(REPLACE(MID("無鄰鼠牛虎兔龍蛇馬羊猴雞狗豬鼠",-LOOKUP(,-FIND(MID(A2&B2&C2&B2&A2&C2&A2,{8,1,2,3,4,5,6},2),"  鼠牛虎兔龍蛇馬羊猴雞狗豬鼠")),2),2,,"的下一個生肖是"),"無的下一個生肖是","無相")

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-3-18 22:43 | 显示全部楼层
不知道过时间了么,先传个
=MID(TEXT(MID("鼠豬狗雞猴羊馬蛇龍兔虎牛鼠0",TEXT(MIN(FIND(A2:C2&TRANSPOSE(A2:C2),"鼠牛虎兔龍蛇馬羊猴雞狗豬鼠"&A2:C2&TRANSPOSE(A2:C2)))-13,"14;0"),2),"0無相鄰;@的下一個生肖是@"),2,9)

一开始是220字符都做不出来- -  没想到现在是144,还没if等- -。。。。

[ 本帖最后由 涅磐86970 于 2011-3-18 22:52 编辑 ]

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-3-19 17:43 | 显示全部楼层
同样是216字符的:
=INDEX(IF({1,1,1,0},A2:C2&"的下一個生肖是"&MID("鼠牛虎兔龍蛇馬羊猴雞狗豬鼠",FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬")+1,1),"無相鄰"),,5-LEN(MAX(MMULT({1,1,1},--(TRANSPOSE(A2:C2)=MID("鼠牛虎兔龍蛇馬羊猴雞狗豬鼠",FIND(A2:C2,"鼠牛虎兔龍蛇馬羊猴雞狗豬鼠")+1,1)))*10^(4-COLUMN(A:C)))))

实在是想不出再好的方法了。看高手的了。

[ 本帖最后由 lhx120824 于 2011-3-19 17:48 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-19 23:03 | 显示全部楼层
我的預設解 130字元
  1. =MID(TEXT(MID("鼠豬狗雞猴羊馬蛇龍兔虎牛鼠",MIN(FIND(A2:C2&TRANSPOSE(A2:C2),"鼠豬狗雞猴羊馬蛇龍兔虎牛鼠a"&A2:C2&TRANSPOSE(A2:C2))),2),"@@@@的下一個生肖是@無相鄰"),8,9)
复制代码
請大家停止修正自己的答案,若同時回答多組,將以符合規定之最短字元解列入評分標準

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-3-20 01:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 39楼 piny 的帖子

piny:干什么?子夜搞一个大家看不见的帖子?我们都睡了,不看了!BYEBYE!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-4 16:22 , Processed in 0.061602 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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