ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [开_157]名单增加(已总结)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2022-4-27 09:10 | 显示全部楼层
本帖最后由 江山社稷 于 2022-4-27 14:03 编辑

L2:R31区域数组
  1. =LOOKUP(ROW()*7+COLUMN(),ROW(26:59)+MMULT(N(ROW(1:31)>COLUMN(A:AE)),(B2:B32<>B1:B31)*K1),B2:B3)&""
复制代码

评分

14

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-4-27 20:07 | 显示全部楼层
  1. =INDEX(B:B,SMALL(((B2:B31<>B3:B32)*K1+1<COLUMN(A:H))*99+ROW(),COLUMN()+7*ROW()-25))&""
复制代码

评分

8

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-4-27 20:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. =WRAPROWS(TOCOL(IF(COUNTIF(B:B,UNIQUE(B2:B31))+K1>=COLUMN(A:Z),UNIQUE(B2:B31),1/0),3),7,"")
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-4-30 17:48 | 显示全部楼层
105,还差5个字符
  1. =INDEX(B:B,SMALL(99*((COLUMN(A:Z)>COUNTIF(B:B,B2:B31)+K1)+(B2:B31=B1:B30))+ROW(),ROW()*7+COLUMN()-25))&""
复制代码

评分

7

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-5-2 22:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
版主不要评我的啦,字符128,超辣

  1. =INDEX(B:B,SMALL(1/IFERROR(1/((COLUMN(A:J)<=(K1*(MATCH(B2:B31,B:B,)=ROW(2:31))+1))*ROW(2:31)),1%),ROW(1:30)*7+COLUMN(A:G)-7))&""
复制代码


学习小笔记
先来个31*10数组,需要输出位置为行号,不要输出的位置为0
iferror函数去0
index+small输出结果

考虑了好久lookup,当查找值大于输出次数后返回结果一直为最后一行,当最后一行不为空时结果错误,放弃,等待学习大佬的

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-5-4 21:33 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-5-7 12:38 | 显示全部楼层
  1. =INDEX(B:B,SMALL((COLUMN(A:J)-1>(B2:B31<>B1:B30)*K1)/1%+ROW(),ROW()*7+COLUMN()-25))&""
复制代码

评分

13

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-5-8 08:07 | 显示全部楼层
  1. L2:R31=LOOKUP(COLUMN(A:G)+ROW()*7-15,MMULT(N(ROW(1:31)>COLUMN(A:AE)),IF(B2:B32=B3:B33,,K1)+1),B2:B32&"")
复制代码

评分

5

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-10 15:25 | 显示全部楼层
本帖最后由 满坛皆为吾师 于 2022-5-10 21:48 编辑

[开_157]名单增加-评分及说明
1、参与奖励奖励10财富;代码模式回复奖励10财富;老版字符数<90奖励10财富
2、部份公式错误为区域选择问题,逻辑无误;10楼本期最优解(字符/时间)
3、忽略TOROW/COLS、WRAPROWS/COLS目前版本随机源存在#SPILL溢出BUG
4、评分公示24小时,有任何疑问请短信
评分.png





[开_157]名单增加-小结
本期题目难度一般,做出来容易,减少字符数可能是部份坛友函数运用的一个盲点,以下先借用本期VIP公式做简单讲解。
  1. =INDEX(B:B,SMALL((COLUMN(A:H)>K1*(B1:B30<>B2:B31)+1)*30+ROW(),ROW()*7+COLUMN()-25))&""
复制代码

1

1
通常在遇到B列数据源的情况下,很多人的第一反应可能是使用MATCH。
但在名字有序排列的情况下,可以直接比较,第一次出现为真,否则假。

2.png
因为K1的最大值为7,而题目要求的重复数量是首次出现的人名增加,其后不变。
如上,最大8次,就有了COLUMN(A:
H)的产生。需要保留为假,体会一下为什么+1。

3.png
*30+ROW(),将上一步结果为真的,需要剔除的值放大处理。
B列数据源只到31,而答题区行数是2起,所以放大值必定大于数据源产生的保留值。

4.png
用SMALL函数将上一步8列的结果转为7列。
ROW()*7+COLUMN()-25相当于ROW(1:30)*7-{6,5,4,3,2,1,0}针对行列的简写形式。


5

5

最后一步,用INDEX定位B列逐个按值取数,用&""去掉空单元返回的0。


接下来我们看看其它思路,这也是我的预设思路之一
  1. =LOOKUP(A2:A31*7+COLUMN(A:G)-8,MMULT(N(ROW(1:33)>COLUMN(A:AE)),(B2:B32<>B1:B31)*K1+1),B2:B3)&""
复制代码
(B2:B32<>B1:B31)*K1+1,仍然是同一种核心构成,但不同是的使用MMULT生成了累加的序列。
MMULT(N(ROW(1:33)>COLUMN(A:AE)),(B2:B32<>B1:B31)*K1+1)
{0;4;5;6;7;11;12;13;14;18;19;23;24;25;26;27;28;29;30;31;32;33;34;38;39;40;41;42;43;44;45;46;46}

6.png
LOOKUP一参生成的的序列也可以简化表达,然后对应二参一一落座。
7.png
最后一步,B2:B3,三参自动扩展,其它就毋庸赘述了。




最后必须要说说出题人梅州的预设,完全在我意料之外的脑洞,本期就三秋之叶同学一个人撞了,点个赞。
  1. =INDEX(B:B,SMALL(IF(B2:B398=B3:B399<=(OFFSET(A2,,,,K1+1)=A2),ROW(2:398)),COLUMN()+7*ROW()-25))&""
复制代码
充份利用的数据源特性,OFFSET生成自适应数组,后面有兴趣的小伙伴们请自行品味,定觉畅快。


说在文末撒野的话:98-99字符的亲们得感谢我,我没算大括号

评分.png

评分

15

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-5-12 18:58 | 显示全部楼层
满坛皆为吾师 发表于 2022-5-10 15:25
[开_157]名单增加-评分及说明
1、参与奖励奖励10财富;代码模式回复奖励10财富;老版字符数

请版主上传公式汇总的附件
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-27 09:48 , Processed in 0.038658 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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