ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2019-2-22 19:07 | 显示全部楼层
148        =INT(A2/E$9)*F$9+LOOKUP(MOD(A2,E$9),--MID(MMULT(COLUMN(A:H)^0,MID(DEC2BIN(COLUMN(A:IU),8),9-ROW($1:$8),1)*(10^8+E$2:E$9*1000+F$2:F$9)),{2;7},{5;3}))

TA的精华主题

TA的得分主题

发表于 2019-2-22 21:14 | 显示全部楼层
凑热闹,用PQ解
其中,“交易额”是指源数据中交易额所在A列的有效数据区域,“返利表”是指源数据中的返利参照表。
  1. = Table.AddColumn(交易额,"返利",each List.Accumulate( List.Reverse(List.Skip(Table.ToRows(返利表))),
  2.                                                      {[交易额],0},
  3.                                                      (s,c)=>[ t=Number.IntegerDivide(s{0},c{0}),
  4.                                                               r={s{0}-t*c{0}, s{1}+t*c{1}}][r]){1})
复制代码



本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-3-1 17:51 | 显示全部楼层
丢丢表格 发表于 2019-1-6 10:56
122 字 ,跟VBA同解

124 字 符合返利最大的题意

我咋感觉刚好是相反,400的话,因为350已经符合了,所以在减350后,再判断后面的档位,当然如果考虑最大返利按两个200算当然是最大的。

TA的精华主题

TA的得分主题

发表于 2019-3-1 20:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
居然没发现帖子已经开了,没想到原来是这么解的,终于知道我为什么觉得不对了,原来最大返利并不是最大到最小依次取。模拟的返利等级拉开差距就发现公式的错误了。

TA的精华主题

TA的得分主题

发表于 2019-3-2 08:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
micch 发表于 2019-3-1 20:26
居然没发现帖子已经开了,没想到原来是这么解的,终于知道我为什么觉得不对了,原来最大返利并不是最大到最 ...

我理解的返利就是最大取,只不过不是各等级对应金额上的最大取,是几个等级依次往下取再对应金额求和,所以有部分值会出现丢丢老师描述的现象不是取200*2,而是取350

TA的精华主题

TA的得分主题

发表于 2019-3-2 09:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
micch 发表于 2019-3-1 20:26
居然没发现帖子已经开了,没想到原来是这么解的,终于知道我为什么觉得不对了,原来最大返利并不是最大到最 ...

老师好!有没有分析的附件,我对这个问题也感到困惑,总觉得不对,但自己水平有限未能理解,求分享下。

TA的精华主题

TA的得分主题

发表于 2019-3-2 09:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
江苏永能朱兴华 发表于 2019-3-1 17:07
老师好!有没有分析的附件,我对这个问题也感到困惑,总觉得不对,但自己水平有限未能理解,求分享下。

我就别献丑了吧,我也等着看总结呢。回头我整理下自己思路,我的公式只是针对太阳老师的这个模拟题,如果返利档数和数字变了就不适用了。因为每一档差额的原因,我的公式能得到模拟结果。
如果差额变大就不对了,我完全是取巧了

TA的精华主题

TA的得分主题

发表于 2019-3-2 09:37 | 显示全部楼层
江苏永能朱兴华 发表于 2019-3-2 09:07
老师好!有没有分析的附件,我对这个问题也感到困惑,总觉得不对,但自己水平有限未能理解,求分享下。

我看了别人结果,也觉得LOOKUP二分法奇怪了,我一直卡在MMULT这段,因为觉得E2:F2没用,所以引用的是E$3:F$8,但直接套LOOKUP就是有问题。换E$2:F$8就可以。。再理解理解了。

TA的精华主题

TA的得分主题

发表于 2019-3-2 09:48 | 显示全部楼层
本帖最后由 micch 于 2019-3-1 18:31 编辑
jivy1212 发表于 2019-3-1 17:37
我看了别人结果,也觉得LOOKUP二分法奇怪了,我一直卡在MMULT这段,因为觉得E2:F2没用,所以引用的是E$3: ...

呃,我还没详细研究老师们的公式呢,想着等哪位老师总结了再研究。老实说二分法我几乎不懂,只明白基本的意思,看得懂说明,但让我说明就难了。

截个图,就当是扔块砖吧。

int+mod取一个数组,能罗列所有组合的可能    =SUM(COMBIN(8,ROW(1:8)))   是255种,但事实上用不到255行,我都不知道我这么做是不是对的。

MMULT(INT(MOD(....能返回两列数据,一组是所有交易额可能组合,一组是对应的返利。这里其实是错误的,我一个一个去罗列出来看过,并不是完全是升序,至少发现两处不是升序,但是在本题里那两处lookup的结果不受影响,所以和太阳老师的模拟结果能对上。

剩下就简单了,超过最大交易额的用int乘以对应返利,剩下的lookup就是了。

本帖子中包含更多资源

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

x

TA的精华主题

TA的得分主题

发表于 2019-3-2 10:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 jivy1212 于 2019-3-2 12:31 编辑
micch 发表于 2019-3-2 09:48
呃,我还没详细研究老师们的公式呢,想着等哪位老师总结了再研究。老实说二分法我几乎不懂,只明白基本的 ...

思路一样的,我就是卡在只引用E3:F8,这样套用LOOKUP后,部分值就会异常,这也是太阳老师题目的坑点:如2600--172   2650--180,所以我放弃了LOOKUP,VLOOKUP,先拆开考虑。后来想到TEXT强制把二维数组的一项就处理下再套MAX。但心理还是有个坑,总感觉可以用LOOKUP,VLOOKUP,自己又想不明白。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-7-15 19:07 , Processed in 0.036388 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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