ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [第95期]数字转换[已总结]

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-6-9 17:50 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 delete_007 于 2013-11-13 16:43 编辑

答题截止日期:2013-8-8 8:00:00
提醒一下:请注意第二点要求,必须是多单元格数组公式方能得分。

说明:
  1.将源码替换成对应的解码,并保持其源码的位置;
  2.将剩余数字按升序排列在剩余空位处;
  3.以源码A6为例,3的解码为8,位置为E6;5的解码为0,位置为G6;
     0的解码为5,位置为B6;再将剩余数字以升序排列于空位,即得结果;
  4.模拟结果见下图。

要求:
  1.纯函数题;
  2.B6:K6多单元格数组公式下拉或者B6:K18多单元格数组公式
  3.需通过03版验证。

评分:
1.公式长度(含等号)小于120字符评2分;
2.其余正确答案给予适当财富奖励。



单选投票, 共有 39 人参与投票

距结束还有: 5816 天5 分钟

您所在的用户组没有投票权限

本帖子中包含更多资源

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

x

评分

9

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-6-22 01:28 | 显示全部楼层
178 Chars
=IF(ISERR(FIND(B$2:K$2,A6)),SMALL(IF(ISERR(FIND(B$2:K$2,A6)),B$1:K$1),IF(ISERR(FIND(B$2:K$2,A6)),B$2:K$2+1-MMULT(1-ISERR(FIND(B$2:K$2,A6)),N(ROW($1:$10)<=COLUMN(A:J))))),B$1:K$1)
再想办法精简……

TA的精华主题

TA的得分主题

发表于 2013-6-22 02:42 | 显示全部楼层
jsxjd 发表于 2013-6-22 01:28
178 Chars
=IF(ISERR(FIND(B$2:K$2,A6)),SMALL(IF(ISERR(FIND(B$2:K$2,A6)),B$1:K$1),IF(ISERR(FIND(B$2:K ...

147 chars
=IF(ISERR(FIND(B$2:K$2,A6)),SMALL(IF(ISERR(FIND($B$2:$K$2,A6)),$B$1:$K$1),MMULT(N(ISERR(FIND($B$2:$K$2,A6))),N(ROW($1:$10)<=COLUMN(A:J)))),B$1:K$1)

TA的精华主题

TA的得分主题

发表于 2013-7-1 18:33 | 显示全部楼层
B6:K6下拉行数组公式(108 chars),又一个“108”,是巧合还是版主故意安排。
  1. =HLOOKUP(B$2:K$2,MOD(SMALL(10*COLUMN(A:J)*ISNUMBER(FIND(B$2:K$2,A6))+B$1:K$2+{0;200},B$2:K$2+{11;1}),10),2,)
复制代码
B6:K18区域数组公式:
  1. =VLOOKUP(ROW(1:13)*10+B2:K2,MOD(SMALL(1000*COLUMN(A:T)*ISNUMBER(FIND(MOD(COLUMN(A:T)-1,10),A6:A18))+MOD(COLUMN(A:T)+(COLUMN(A:T)<11)*5-1,10)+IF(COLUMN(A:T)<11,10^8,10*ROW(1:13))+ROW(1:13)*10^6,ROW(1:130)+{0,130}),{1000,10}),2,)
复制代码
构造单行“码表”比较费码。若简单定义两个名称:
X=ROW(题目!$A$6:$A$18)
Y=COLUMN(题目!$A:$T)
可简写如下,也比较直观:
  1. =VLOOKUP(10*X+B2:K2,MOD(SMALL(1000*Y*ISNUMBER(FIND(MOD(Y-1,10),A6:A18))+MOD(Y+(Y<11)*5-1,10)+IF(Y<11,10^8,10*X)+X*10^6,ROW(1:130)+{0,130}),{1000,10}),2,)
复制代码

点评

这个思路。。。。。。。怎么想出来的  发表于 2013-8-10 10:11

评分

7

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-7-1 20:00 | 显示全部楼层
自参加竞赛题以来目前为止用时最长的一道题,开始几天无法完成small第二参数的构建,在看到94期mmult的用法后,豁然开朗,从153到141又到139,直到现在的137,兴奋之余又看此贴,发现从原来的150减到120,郁闷之余问过7版,有人违规,不得不改评分标准。先贴上,对得起花费这么多时间,有机会再。。。。。。。
137字,b6:k6
  1. =IF(ISERR(FIND(B$2:K$2,A6)),SMALL(IF(ISERR(FIND(B$2:K$2,A6)),B$1:K$1),MMULT(ISERR(FIND(B$2:K$2,A6))*1,N(B$2:K$2+2>ROW($1:$10)))),B$1:K$1)
复制代码

点评

这还有人玩违规呀,真无聊。  发表于 2013-8-8 11:48

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-7-2 09:57 | 显示全部楼层
193个字符
  1. =IF(ISERR(FIND(COLUMN(A:J)-1,$A6)),SMALL(IF(ISNA(MATCH(B$2:K$2,--MID($A6,COLUMN(A:J),1),)),B$1:K$1),MMULT(--ISNA(MATCH(B$2:K$2,--MID($A6,COLUMN(A:J),1),)),N(COLUMN(A:J)>=ROW($1:$10)))),B$1:K$1)
复制代码

补充内容 (2013-7-13 10:19):
140个字符

=IF(ISERR(FIND(B$2:K$2,$A6)),SMALL(IF(ISERR(FIND(B$2:K$2,$A6)),B$1:K$1),MMULT(-ISERR(FIND(B$2:K$2,$A6)),-(B$2:K$2+1>=ROW($1:$10)))),B$1:K$1)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-7-2 16:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这几天脑袋都想爆了,B6:K6区域数组只能做到134,有空再找找其它思路:
  1. =IF(ISERR(FIND(B$2:K$2,A6)),LARGE(ISERR(FIND(B$2:K$2,A6))*B$1:K$1,MMULT(-ISERR(FIND(B$2:K$2,A6)),-(ROW($2:$11)>COLUMN(A:J)))),B$1:K$1)
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-7-2 22:13 | 显示全部楼层
一、B6:K6多单元格数组公式下拉(ps.字符有点多,137字符,有待进一步提高 )
  1. =IF(ISERR(FIND(B$2:K$2,A6)),LARGE(ISERR(FIND(B$2:K$2,A6))*B$1:K$1,MMULT(N(ISERR(FIND(B$2:K$2,A6))),N(ROW($1:$10)>=COLUMN(A:J)))),B$1:K$1)
复制代码
二、B6普通数组公式,下拉,右拉
  1. =IF(ISERR(FIND(B$2,$A6)),LARGE(ISERR(FIND($B$2:$K$2,$A6))*$B$1:$K$1,SUM(--ISERR(FIND(B$2:$K$2,$A6)))),B$1)
复制代码
辛苦版主审核!


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-7-5 06:42 | 显示全部楼层
本帖最后由 丢丢表格 于 2013-7-5 08:29 编辑

先占个位来再说:
=IF(ISERR(FIND(B$2,$A6)),MIN(IF(COUNTIF(INDIRECT("RC"&1+(B$5="")&":RC[-1]",),IF(ISERR(FIND($B$1:$K$1,$A6)),$B$2:$K$2,)),"",IF(ISERR(FIND($B$1:$K$1,$A6)),$B$2:$K$2,99))),B$1)

是有点难,终于可以出手了:
=IF(ISERR(FIND(B$2,$A6)),SMALL(IF(ISERR(FIND($B$1:$K$1,$A6)),$B$2:$K$2,99),B$2+1-COUNT((FIND($B$2:B$2,$A6)))),B$1)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-7-5 14:36 | 显示全部楼层
B6:K6多单元格数组公式下拉
  1. =IF(ISERR(FIND(B$2:K$2,A6)),LARGE(ISERR(FIND(B$2:K$2,A6))*B$1:K$1,COUNT(INDIRECT("rc12:rc[1]",))+1),B$1:K$1&"")
复制代码

点评

辅助列借用的好  发表于 2013-8-10 10:13

评分

7

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-21 16:38 , Processed in 0.050030 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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