ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [开_141]按条件取整数问题

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-1-6 19:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
vanpeise 发表于 2012-12-12 20:39
没有一个能达到俺想要的结果.只要把第一个数设为0,后面的两个数大的永远是3,小的永远是1.不论是否大于其2 ...

楼主自己都解释不清楚吧,还有 4  是怎么解释

附件中的数据  可分为几种类型A>B>C>0
1,ABC ABB 这两种情况很显然对应的都是 211  (BAC BCA BBA BAB 同理)
2,0AB 00A 对应 031  004
3,AAA  BAA ABA AAB分别对应 112 112 112 121                        

TA的精华主题

TA的得分主题

发表于 2013-1-6 20:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
vanpeise 发表于 2012-12-4 23:33
哥们不是四舍五入,是看最大数于最小数的倍数。如果3个数中有2个为0的话,那么剩下的一个数直接取4.如果有一 ...

楼主“剩下的两个数如果较大的数大于或者等于较小的数的两倍的话,那么较小的数是1,较大的数是3,否则各为2.”这句话在原题目数据中没有体现吧   没有022情况 只有013情况

TA的精华主题

TA的得分主题

发表于 2013-1-7 07:15 | 显示全部楼层
难度就在于022,如果全是013,就非常容易了。曾询问楼主这个问题未见答复。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-6 21:24 | 显示全部楼层
uniondxl 发表于 2013-1-6 20:03
楼主“剩下的两个数如果较大的数大于或者等于较小的数的两倍的话,那么较小的数是1,较大的数是3,否则各 ...

出题的不是我,是wangg913,里面的题目设置和我的原来意思是有差距的。我想要的情况包括220,310,400,211这几种组合。然后再排列

TA的精华主题

TA的得分主题

发表于 2013-1-7 09:36 | 显示全部楼层
我也發好幾次短信詢問LZ,看來LZ不曉短信功能,在此篇回復我猜只有大頭版主看的到。剛好大頭版主的示例並沒有022。

建議下次出題一律由版主編輯後以版主名義出題(可另外給出題者獎勵即可),以便統一回覆題意

点评

你说的这个规则,willin2000竞赛总版也是这么要求的。 怕就怕,确实没时间。 每年12月份,我都比较忙。 本来以为今年最后5、6天能抽出空来  发表于 2013-1-7 11:01

TA的精华主题

TA的得分主题

发表于 2013-1-7 11:07 | 显示全部楼层
嗯 頭版辛苦了 這次卡在LZ沒辦法即時清楚回覆題意 所以大家就各猜各的 哈

可以避開年末出題,小弟工作則是三到五月忙季,忙起來天天十二點下班吧!每個行業不太一樣

TA的精华主题

TA的得分主题

发表于 2013-1-7 11:29 | 显示全部楼层
piny 发表于 2013-1-7 09:36
我也發好幾次短信詢問LZ,看來LZ不曉短信功能,在此篇回復我猜只有大頭版主看的到。剛好大頭版主的示例並沒 ...

這個觀點我支持,不過就是新發帖的版主不能參與答題了

最近陳兄很久沒有在競賽區出題了啊,不會是被我以前說掉的吧,還是很期待陳兄的題目哦

点评

哈!沒空出題,參與時間也有限!我會找時間的! ^^  发表于 2013-1-7 11:34

TA的精华主题

TA的得分主题

发表于 2013-1-7 13:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 Zaezhong 于 2013-1-11 14:53 编辑

       [开_141]按条件取整数问题点评
      本题大家在理解题目的意思存在较大的偏差,导致最后的结果多少都有问题了,至于验证的附件请到30楼下载,已经全部列举了9260种组合。由于当三个数是如{0,6,10}这样的组合时(一个数为0,另外两个的比值为0.6)返回的结果没有说明可以返回{0,1,3}抑或{0,2,2},为此只要符合其中一直效果即可,至于0.6来历后面会说明。

       先分析下题目说明,先要求将3个数分别计算总和的比重,再乘以4倍,如果这个比值小于1,那么就转换为1,如果为0就是等于0,换句话说最后结果只要不是0,那么最少就是1,这样就解释了为什么源数据中的28行结果是{1,2,1}
QQ截图20130107135903.png
考虑问题的本身是占比而不是数据的实际大小。其中楼主的后续的跟帖说明由于只有楼主可见,不做要求,仅仅以1楼的说明为准。

       从答题情况看只有一解(粗体部分可以省略)=IF(A3:C3,IF(COUNT(0/A3:C3)*(MEDIAN(A3:C3)>=MAX(A3:C3)*0.6)=2,2,(5-COUNT(0/A3:C3)-(MEDIAN(A3:C3)=MAX(A3:C3))*({0,1,2}<(B3=C3)+1))^(RANK(A3:C3,A3:C3)=1)),)公式说明以其中一个为例,该公式对于{0,6,10}这种情况返回{0,2,2}说明。

         通过前面第一步的题目分析知道了只要非0就最少可以得到1,所以使用IF(A3:C3,待讨论的结果,),再次判断是否是类似于{0,6,10}这种一个值为0,另外两个比值刚好等于0.6的情况,如果是返回{0,2,2},这里有一个0.6,在此通过计算来说明,因为是对占全部总和的比重的4倍,我们假设三个数分别是0,X,Y(其中X<Y),该组合情况下最后结果只需要四舍五入,这样可以得到X/(X+Y)=1.5/4,得到X/Y=0.6(这里的1.5是一个分界点,因为最后的结果中最大值对应的值不会小于中值对应的值,所以该部分的结果只可以是{0,1,3}或者{0,2,2},这两种情况的一个中间态就是1.5)。至于
COUNT(0/A3:C3)*(MEDIAN(A3:C3)>=MAX(A3:C3)*0.6)=2(COUNT(0/A3:C3)=2)*(MEDIAN(A3:C3)>=MAX(A3:C3)*0.6)的简化形式,其中COUNT(0/A3:C3)限制只有2个数非零,MEDIAN(A3:C3)>=MAX(A3:C3)*0.6限制两个非零数的比值,只要大于(或者大于等于)0.6就显示为2

         公式的核心部分在于(5-COUNT(0/A3:C3)-(MEDIAN(A3:C3)=MAX(A3:C3))*({0,1,2}<(B3=C3)+1))^(RANK(A3:C3,A3:C3)=1)其中的复杂判断也在于此。到此再分析下最后可能返回的结果。

       假设三个数分别是A,B,C,(其中A<=B<=C后续分析全部基于该关系,其对应的返回值分别为A1,B1,C1)那么可能的结果有{0,0,4}{0,1,3}{0,2,2}{1,1,2}这样4种情况。其中最大值C的返回值(记为C1)跟0的个数存在直接的关系,零越多,C1就可能越大,为什么使用可能就是因为还需要判断中值BC*0.6的关系,如果没有零值,那么最大无论如何也是为2。所以公式使用了5-COUNT(0/A3:C3),这是一个最大的值,但是最后具体是多少还需要看后面部分判断,题目要求如果B=C,那么最后一个加1,其实这说明了C1最多是2,由于4这个值的限制,如果A=0,那么那么只能是{0,2,2}也不存在最后一个加1的情况,而且这种情况已经包含在了前面的IF判断中,那么只有A>0,由于A非零,根据前面分析最少就是1,所以余下的只有3了,所以合理的组合也只有{1,1,2}了。公式使用了(MEDIAN(A3:C3)=MAX(A3:C3))来表示B=C,这样表示可以比(COUNTIF(A3:C3,MAX(A3:C3))=2)字符数更少,后面的判断部分({0,1,2}<(B3=C3)+1))^(RANK(A3:C3,A3:C3)=1)。为什么使用{0,1,2}<(B3=C3)+1?符号“<”的右边部分可能返回1或者2两种情况,如果B=C表示成公式就是B3=C3,那么B1=C1-1{0,1,2}<(B3=C3)+1部分的结果为{TRUE,TRUE,FALSE}。说到此,大家就会有疑问了,上面的A<=B<=C的情况只是数据组合的一般情况,但是可能事实并非如此,该疑问暂时留到最后再来回答。(RANK(A3:C3,A3:C3)=1)的作用最大值对应的的返回TRUE否则FALSE,也即非最大值的非零全部为1,其实看似很长的公式只是判断了一直情况,也就是B=CA>0。如果没有B=C,那么后面的(MEDIAN(A3:C3)=MAX(A3:C3))*({0,1,2}<(B3=C3)+1)肯定为0,这样就没有体现作用了。这里RANK的使用跟COUNTIF(A3:C3,”>”&A3:C3)的使用类似,其中的区别在正式竞赛区函数第91期的总结附件已经有详细说明http://club.excelhome.net/forum.php?mod=redirect&goto=findpost&ptid=930654&pid=6462656在此不再赘述。

       再反过头来回答下前面的疑问,为此举种情况如{8,1,8}或者{8,8,1}(最小值位置三取其一只有3种情况,排除前面说明的余下两种,这两种情况的一个共同点是第一个数据就是最大值,另一个最大值就通过RANK(A3:C3,A3:C3)=1来限定),具体的数据不会影响最后结果,这两种情况下{0,1,2}<(B3=C3)+1部分的结果均为{TRUE,FALSE,FALSE},由于{0,1,2}<(B3=C3)+1部分的结果中的TRUE肯定在左侧且为连续。该结果的第一个一定是TRUE,所以整体通过(5-COUNT(0/A3:C3)-(MEDIAN(A3:C3)=MAX(A3:C3))*({0,1,2}<(B3=C3)+1))来表示真数(该部分结果如下图无颜色填充部分),其中真数是递增的,这里所谓的递增是指最大值对应值,不包括非最大值。最后通过RANK部分使得非最大值对应的值返回1
QQ截图20130107140445.png
       综上,由于本题的总和是4,所以所有的情况不多,如果数据较大问题将复杂得多,可惜大家没有提供直接通过相关四舍五入方面的答案,较多参与者主要没有对A3:C3/SUM(A3:C3)*4部分列入公式考虑范围之内。原公式=IF(A3:C3,IF(COUNT(0/A3:C3)*(MEDIAN(A3:C3)>=MAX(A3:C3)*0.6)=2,2,IF(RANK(A3:C3,A3:C3)=1,5-COUNT(0/A3:C3)-(MEDIAN(A3:C3)=MAX(A3:C3))*({0,1,2}<(B3=C3)+1),1)),),适当简化后就是层顶公式。

       除10楼,其他具体评分通过已点评说明。其中一些答案没有四舍五入,当一个为0,其余两个比值大于0.6时全部显示0,1,3的单独采用不同的规则,如果公式存在返回值相加不等于4的情况全部算错,仅仅评参与分。

TA的精华主题

TA的得分主题

发表于 2013-1-8 09:59 | 显示全部楼层
Zaezhong 发表于 2013-1-6 19:41
問題較麻煩,其中公式正誤請參考下方附件
使用:顏色部分輸入公式,如果N1顯示正確即正確,否則顏色部分就 ...

亲,没明白您的点评,能不能举例说明?
比如说 0 6 6 的结果应该是0 2 2 。0 5 6 的结果应该是0 1 3 。0 1 99的结果也是0 1 3.。。。。
如果有一个0的情况下,除了0 1 3 就是0 2 2 这两种组合,我没明白

点评

0,5,6三個數相加為11,{0,5,6}/11*4={0,1.818181818,2.181818182},四捨五入結果應該是{0,2,2}對應全部返回{0,1,3}的已經使用不同規則評分  发表于 2013-1-8 10:45
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-23 15:05 , Processed in 0.052188 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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