ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [第93期]两列互补对齐[已总结]

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-4-9 16:12 | 显示全部楼层 |阅读模式
本帖最后由 delete_007 于 2013-5-13 19:01 编辑

总结评分在16楼,请移步:[正式93期]总结及评分
一、说明:
  1、A2:B27为数据源,A2:A27没有空单元格,B2:B27只在底部可能有不定数量的空单元格。   
  2、B列里面与A列相同的姓名,其出现顺序与A列相同。   
  3、将A、B两列姓名互补对齐,另一列没有的姓名对应位置留空。  
  4、遇到连续几个姓名在另一列都没有的,在对应的另一列连续留空。(如I5:J10)
  5、I2:J53为模拟结果(见下图),不允许引用,E2:F53为答题区。

二、要求:
  1、E2数组公式右拉下拉、E2:F2数组公式下拉、E2:F53多单元格数组公式皆可。
  2、上交答案时仅贴出E2单元格公式即可。
  3、纯函数题。

三、参赛奖励:
  1、350以内字符 技术+1
  2、280以内字符 技术+2
  3、精彩答案 技术+3

四、开赛及开贴时间待定
题目构思由悟空师弟提供,我只提供答案,在此对他表示由衷的感谢。










本帖子中包含更多资源

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

x

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-4-14 13:16 | 显示全部楼层
本帖最后由 delete_007 于 2013-5-13 18:49 编辑

抛一下,被自己的题给难住了,只能写到293字符{:soso_e127:}:
  1. =INDEX(A:A,MOD(SMALL(IF({1,0},ROW(1:27)*1001,SMALL(IFERROR(MATCH(IF(COLUMN()-5,B1:B27,$A1:$A27),A:A,)*1000+COLUMN()*100-401,99999),5-COLUMN()+MMULT(N(ROW(1:27)>=COLUMN($A:$AA)),COUNTIF(A:A,IF(COLUMN()-5,B1:B27,$A1:$A27))))*100^COUNTIF(A:A,IF(COLUMN()-5,B1:B27,$A1:$A27))-1),ROW(2:53)),100))&""
复制代码


评分见后面的回帖。

                   ——delete_007

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-4-15 09:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. =T(INDIRECT(TEXT(RIGHT(SMALL(CHOOSE({2,1,2,1},(COUNTIF(A:A,B2:B27)-1-INT(LOG(MMULT(N(COLUMN(B:AA)>ROW(1:26)),10^-IFERROR(MATCH(B2:B27,A:A,),70)))))/1%+1+2%%,ROW(2:27)/1%+1%%)+ROW(2:27)%+CHOOSE(COUNTIF(A:B,A2:D27)+1,,{3,-3,0,0},96^6)%%%,ROW()*2-{3,2}),4),"r0c00"),))
复制代码
预解答案265字符。

TA的精华主题

TA的得分主题

发表于 2013-4-17 11:09 | 显示全部楼层
本帖最后由 顺⑦.zì繎。 于 2013-4-19 10:52 编辑

当前已破  200字符大关当前 192 字符   就这样吧  不减了。机子跑不动

  1. =IF(OR(ROW()=IF(6-COLUMN(),(1-COUNTIF(A:A,B$2:B27))*ROW($2:27)+SUM(1-COUNTIF(B:B,A$1:OFFSET(A$1,SUM(N(E$1:E1>"")),))))),"",IF(IF(D2>"",COUNTIF(A:A,D2)=0),"",OFFSET(A$1,SUM(N(E$1:E1>"")),)&""))
复制代码

187字符。。
  1. =IF(OR(ROW()=IF(6-COLUMN(),(1-COUNTIF(A:A,B$2:B27))*ROW($2:27)+SUM(1-COUNTIF(B:B,OFFSET(A$1,,,SUM(N(E$1:E1>""))+1))))),"",IF(COUNTIF(A:A,D2)+(D2=""),OFFSET(A$1,SUM(N(E$1:E1>"")),)&"",""))
复制代码
182字符。。比较蜗牛。。电脑速度慢的小心卡死机{:soso_e120:}
  1. =IF(OR(ROW()=((1-COUNTIF(A:A,B$2:B27))*ROW($2:27)+SUM(COLUMN(A1)-COUNTIF(B:B,OFFSET(A$1,,,SUM(N(E$1:E1>""))+1))))),"",IF(SUM(N(A:A=D2))+(D2=""),OFFSET(A$1,SUM(N(E$1:E1>"")),)&"",""))
复制代码


点评

晕死,这个公式我的电脑根本跑不起来,一填充公式就死机了。  发表于 2013-5-2 15:36

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-4-18 11:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 delete_007 于 2013-5-10 08:44 编辑

说明2有点不解

从例子上看 心电感应的顺序不一样 出现顺序怎么理解?
=============================================================
如对题目有任何疑问或问题,请发短消息于我,不能单独占楼,谢谢合作,下不违例。

                              --delete_007

TA的精华主题

TA的得分主题

发表于 2013-4-18 17:26 | 显示全部楼层
本帖最后由 delete_007 于 2013-5-10 08:44 编辑

第一次來這裡回答,不知有何資格限制?
另外上傳檔案要如何先隱藏 ?
=============================================================
如对题目有任何疑问或问题,请发短消息于我,不能单独占楼,谢谢合作,下不违例。

                              --delete_007


点评

粘贴你的公式,上传你的答案附件,直接回帖即可。  发表于 2013-4-18 17:32

TA的精华主题

TA的得分主题

发表于 2013-4-19 17:09 | 显示全部楼层
E2:E53多单元格数组公式,右拉,215字
  1. =INDEX(A:A,RIGHT(SMALL(({3,2.5}*COUNTIF($A:$B,$A2:$B27)=COLUMN())*9^9+MMULT(-(ROW(2:27)>COLUMN($A:$Z)),-(COUNTIF($A:$B,$A2:$B27)=2))/1%%+({2,3}-COUNTIF($A:$B,$A2:$B27))/1%+ROW(2:27)-(COLUMN()={6,5})%,ROW()-1),2))&""
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-4-20 22:02 | 显示全部楼层
本帖最后由 swyrlbq 于 2013-4-22 15:48 编辑

=INDEX(A:A,RIGHT(SMALL(IF(COLUMN($A:$F)=6,ROW($2:$27),IF(MMULT(LARGE((COUNTIF($A$2:$B$28,$A$2:$B$28)=2)*ROW($1:$27)+{1,2}/1%,ROW($1:$26)+27*(COLUMN()-5)+{1,0})*{-1,1},{1;1})>COLUMN($A:$F),LARGE((COUNTIF($A$2:$B$28,A$2:A$28)=2)*ROW($2:$28),ROW($1:$26)+(COLUMN()-5))+(COLUMN()-5)-1%,99)),ROW(1:1)),2))&""

优化公式,把countif第一参数,改为引用整列,可减少字符,但运算减慢;一列需要0,二列需要1,用(column()-5),3个就用了36字符,如果可以引用变为(B1=0)这样,公式变为E2:E53数组公式,可大大减少字符,但就公式本身无有大改进。255字符
E2:E53=INDEX(A:A,RIGHT(SMALL(IF(COLUMN($A:$F)=6,ROW(2:27),IF(MMULT(LARGE((COUNTIF($A:$B,$A1:$B27)=2)*ROW(1:27)+{1,2}/1%,ROW(1:26)+27*(B1=0)+{1,0}),{-1;1})>COLUMN($A:$F),LARGE((COUNTIF($A:$B,A1:A27)=2)*ROW(1:27),ROW(1:26)+(B1=0))+(B1=0)-1%,99)),ROW(1:52)),2))&""


发现如果只有一个重复,或没有重复,公式会出错,进一步完善:

E2:E53=INDEX(A:A,RIGHT(SMALL(IF(COLUMN($A:$AA)=27,ROW(1:27),IF(MMULT(LARGE((COUNTIF($A:$B,$A1:$B28)<>1)*(29-ROW(1:28))+{1,2}/1%,(B1=0)*28+ROW(1:27)+{0,1}),{1;-1})>COLUMN($A:$AA),SMALL((COUNTIF($A:$B,A1:A28)=1)*99+ROW(1:28),ROW(2:28)-(B1=0))+(B1=0)-1%,99)),ROW()),2))&""




评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-4-21 22:55 | 显示全部楼层

本帖子中包含更多资源

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

x

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-5-1 11:04 | 显示全部楼层
重在参与:
=IF(COUNTIF(A$2:A$27,INDIRECT(TEXT(MIN(IF(COUNTIF($E$1:F1,$A$2:$B$27)=0,ROW($A$2:$B$27)*10+COLUMN($A$2:$B$27))),"R0C0"),)),INDIRECT(TEXT(MIN(IF(COUNTIF($E$1:F1,$A$2:$B$27)=0,ROW($A$2:$B$27)*10+COLUMN($A$2:$B$27))),"R0C0"),),"")
数组

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-12-4 00:53 , Processed in 0.055680 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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