ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [第126期]碾转式按档计算最大返利

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2019-4-9 18:41 | 显示全部楼层
jivy1212 发表于 2019-3-2 09:37
我看了别人结果,也觉得LOOKUP二分法奇怪了,我一直卡在MMULT这段,因为觉得E2:F2没用,所以引用的是E$3: ...

跟你一样,刚开始以前是升序,用了lookup发现不对才把所有组合列出来看了一下。我最终采用的还是text处理把小于的置1用vlookup精确查找1(我的数据是用的降序,保证第1个1是从大到小的分法)
然后来看了下别人的答案,才发现lookup也能结果正确。
仔细看了下数据,如果升序二进制从0-63,则2700刚好在第32个上,这个值是lookup二分法的第一个判断点,也是导致之前出错的原因。他们正确的基本都是0-1-1-2-2-...-63-63-0这样的顺序。
如果不考虑100以下的找不到返回错误值,用1-63-0这样的顺序也是可以正确的,这个顺序第一个判断点是2650,保证了2650以上的都在这个之后查找。上面0-1-1-..-0这个顺序同时解决了0值和判断点问题。

TA的精华主题

TA的得分主题

发表于 2019-4-9 19:00 | 显示全部楼层
本帖最后由 xzk235 于 2019-4-9 19:07 编辑
opqazxc 发表于 2019-3-9 21:53
附件就图片的excel内容``
再补充一下,lookup 配合得好没问题。。其他的就等总结的验证了。

看了你这个图,感觉忽然明白了点啥。
非升序点,也就是1个高档<几个低档之和的情况。你现在这个情况是从1-31的二进制算的(无0),此图中所有几个低档升为一个高档的地方(二进制升位的地方)都正好是二分法的判断点,所以能完全避开避免错误,只是现在没从0开始,无返利的情况下找不到值。如果从0-31就正好全碰上.....这也是我之前用lookup出错的原因。

之前还有一楼回复的时候说什么要审核,结果就找不到了。
答案里面用lookup正确的,基本引用数据都包含e2:f2的0值,然后二进制从1-127,最终的结果顺序是0-1-1-...-63-63-0,同时处理了0和非升序点问题,出错的基本是引用数据不含e2:f2,二进制从0-63,结果顺序也是0-1-...-63。

TA的精华主题

TA的得分主题

发表于 2019-4-12 13:35 | 显示全部楼层
本帖最后由 丢丢表格 于 2019-4-12 16:41 编辑

本期评分  
如有异议,请联系我丢丢表格007 老师

本帖子中包含更多资源

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

x

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-4-23 12:03 | 显示全部楼层
本帖最后由 sayhi95 于 2019-4-23 12:31 编辑
  1. = Table.AddColumn(源,"返利",each List.Accumulate(List.Zip({List.Accumulate(返利表转换[交易额],{{},[交易额]},(s,c)=>{s{0}&{Number.IntegerDivide(s{1},c)},Number.Mod(s{1},c)}){0},返利表转换[返利]}),0,(x,y)=>x+y{0}*y{1}))
复制代码

去掉Transform一层

本帖子中包含更多资源

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

x

TA的精华主题

TA的得分主题

发表于 2019-4-29 16:28 | 显示全部楼层
本帖最后由 hno3861 于 2019-4-29 17:01 编辑
丢丢表格 发表于 2019-4-12 13:35
本期评分  
如有异议,请联系我丢丢表格 或 007 老师 。

我并不是故意占楼,只是时间过了编辑时间,修改不了,所以不小心点了回复。第二个楼层我没找到删除的选项就没办法了,长期混迹贴吧对EH论坛操作不熟悉,不好意思啊。

TA的精华主题

TA的得分主题

发表于 2019-7-30 16:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
标题中的“最大返利”只是一个概括,具体计算返利值的方法已经在“题目说明”里详细介绍,我认为不存在歧义。

TA的精华主题

TA的得分主题

发表于 2019-7-30 17:33 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
手机上论坛想翻到最后一楼可真麻烦。

突然发现多了技术分,感觉很开心,期待新贴

TA的精华主题

TA的得分主题

发表于 2023-5-10 22:09 | 显示全部楼层
递归

  1. =LAMBDA(m,LET(_a,MATCH(m,Sheet1!$E$2:$E$9),_b,INDEX(Sheet1!$F$2:$F$9,_a),_c,INDEX(Sheet1!$E$2:$E$9,_a),_d,m-_c,IF(_c=0,_b,SUM(_b,f3x(_d)))))
复制代码
  1. =MAP(A2:A17,LAMBDA(x,f3x(x)))
复制代码

本帖子中包含更多资源

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

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

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-25 12:14 , Processed in 0.032462 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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