ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [第122期]补齐缺数

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2018-5-16 09:38 | 显示全部楼层
本帖最后由 丢丢表格 于 2018-5-16 10:30 编辑

海鲜 老师的公式 很牛:
=MOD(MODE(COUNTIF($A2:E2,$A2:E2+{1;-11})%+$A2:E2,(F$1=0)*E2),12)+1    

这里的 +{1;-11}  用得很好 ,即省下了一个 MOD 、也为 后面的补上 E2 这个数 提供了条件 。
             牛人呀 ,佩服 !!
  
还有 尛ぃ謉 老师的   =MODE(MOD(N(OFFSET(E2,,MOD(COLUMN($F:J),1-COLUMN())))+ROW($12:$22),12)+1) 的序位排法有新意 。







评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-5-16 14:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

[第122期]补齐缺数答案汇总及总结

本帖最后由 LSL1128xgw 于 2018-5-19 09:34 编辑

各位坛友:
由于大头版主比较忙,我代总结及评分,如果有异议的地方可以及时回复。
总结:
此题解法总体上来说有两种,一种是加权法,一种是众数法,大部分思路为众数法
众数法处理比较好的是:LSL1128xgw,象山海鲜,梦幻小丑均在70以内。opqazxc 众数排序法用的比较新颖值得学习。丢丢老师内存数组公式也是值得学习借鉴的思路。
象山海鲜 公式:=MOD(MODE(COUNTIF($A2:E2,$A2:E2+{1;-11})%+$A2:E2,(F$1=0)*E2),12)+1
此题关键点:
1.循环判断,因为要借用前面一个单元格所以需要处理e2单元格在第一个出值的情况下从左到右进行判断,第二个值至最后一个值,前一个单元格都必须先做判断再判断前面已有的数据。特殊处理方式:(F$1=0)*E2 和S2%+E2 如果没有模拟结果借用L列也是正确的。
2.循环判断的结构有两种,一种countif,另外一种是sumif。
3.循环判断中唯有海鲜老师在第二参数处理的超乎所有人预料,这里的 +{1;-11}  用得很好 ,即省下了一个 MOD 、也为 后面的补上 E2 这个数 提供了条件 。 +{1;-11} 处理的关键点在11和12这两个数类似互补的关系,11处理后为:12;0一个判断一个不判断,12处理后为13;1也是一个判断一个不判断。-11此数与1的巧妙结合生出了如此神奇的公式。countif判断循环数据后把存在的数据加个%加上原来数据避免干扰其他数据,没有的值为0加原来的值还是为原来的数据,加个mode取最先等同概率的值。最后套用mod套路。
思路2:LSL1128xgw
公式1:=MOD(MODE(SUMIF($A2:E2,MOD($A2:E2,12)+1)*{0;9}+$A2:E2,S2%+E2),12)+1
公式2:=MOD(MODE(SUMIF($A2:E2,MOD($A2:E2,12)+{99;1})%+$A2:E2,S2%+E2),12)+1 此思路同为67字符,未上传至论坛,供坛友借鉴。
梦幻小丑
=MOD(MODE(COUNTIF($A2:E2,MOD($A2:E2,{12;0})+1)%+$A2:E2,E2+S2%),12)+1
循环结构用sumif,参数2的构造也是通用构造,处理在sumif后*{0;9} 一个为了mode得到第一个众数,一个为了得出的值与原来数据相加不造成影响乘以了一个9;mode借用判断和梦幻老师想到一块去了用s2%+e2来做处理。
思路3:opqazxc  =MODE(MOD(N(OFFSET(E2,,MOD(COLUMN($F:J),1-COLUMN())))+ROW($12:$22),12)+1)
此思路排序方法很精妙,构造出offset第三参数,f2单元格公式中引用本身序列a:e,偏移后把得出结果先调至最前,利用row(12:22) 做众数处理
补充说明:row(12:22) 11个数是为了错位减少比他前面的数,已达到不能成为众数,只取达到成为总数的数。
丢丢老师加权处理方式在总结报告中有解析说明。
结合海鲜老师,我,和梦幻思路此题最简公式为:=MOD(MODE(sumif($A2:E2,$A2:E2+{1;-11})%+$A2:E2,s2%+E2),12)+1  60字符!
函数是常见函数但是处理确是千变万化。希望各位坛友在函数道路上尽量做到大道至简!
由于第一次做总结,有些不足之处望各位坛友见谅!
在此重新说明下:引用s列算是一种引用模拟数据列算是取巧的思路,如果没有模拟列引用L列会造成循环,此题按照正规写法s列不能引用,引用f$1.感谢丢丢老师,海鲜老师提醒。以后答题也会注意,不引用模拟结果,即使借用也不行。

本帖子中包含更多资源

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

x

评分

12

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-5-16 14:56 | 显示全部楼层
看了各位老师的精妙绝伦解题方法真的是脑洞大开,无比佩服!学习的路还长着,真是活到老,学到老。

TA的精华主题

TA的得分主题

发表于 2018-5-16 15:33 | 显示全部楼层
大部分老师的公式都掌控在90字符以内,原以为比较怪异的题,结果感觉又变成了送分的题,呵呵呵呵

TA的精华主题

TA的得分主题

发表于 2018-5-16 19:39 | 显示全部楼层
本帖最后由 丢丢表格 于 2018-5-19 09:30 编辑

借 6楼  尛ぃ謉  老师的思路 做一个 较短的公式:
       55 字
  1. =MODE(MOD($A2:E2+ROW($12:$22),12),E2-{0,12}+(F$1>0)%)+1
复制代码



评分

8

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-5-16 20:49 | 显示全部楼层
本帖最后由 丢丢表格 于 2018-5-16 20:54 编辑

=MOD(MODE(IF(COUNTIF($A2:E2,MOD($A2:E2,12)+1)=0,$A2:E2*{1;1}),(COLUMN()>6)*E2),12)+1
  我喜欢这样 中规中矩的写法 。
要是 E、F 列 中间有一空白列的话,我的权重法公式就有长处了。。

TA的精华主题

TA的得分主题

发表于 2018-5-17 09:50 | 显示全部楼层
小宇宙快被大神们玩炸了,你们简直太厉害了!

TA的精华主题

TA的得分主题

发表于 2018-5-17 10:22 | 显示全部楼层
感觉开贴后有人继续减的话氛围会很好吧。
话说开贴后在原最少字符的情况下再继续减是否有加分呢?

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-5-17 10:28 来自手机 | 显示全部楼层
丢丢表格 发表于 2018-5-16 19:39
借 6楼  尛ぃ謉  老师的思路 做一个 较短的公式:
       51 字

顺序有点问题。

TA的精华主题

TA的得分主题

发表于 2018-5-17 10:40 | 显示全部楼层
本帖最后由 丢丢表格 于 2018-5-17 10:50 编辑
opqazxc 发表于 2018-5-17 10:28
顺序有点问题。

众多数据测试后, 结果 正确 。
   能通过的 。(还是你的思路好)
   肯定 没问题:
2
5
2
2
4

   这样的数据 都能进行补数 。


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

本版积分规则

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

GMT+8, 2024-11-21 18:50 , Processed in 0.045781 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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