ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2019-1-4 19:34 | 显示全部楼层 |阅读模式
本帖最后由 delete_007 于 2019-3-1 13:47 编辑

碾转式按档计算最大返利

题目说明:
  1.这是一个商场促销返利活动,E:F列是各档交易额对应的返利。
  2.交易额都是正整数,根据A列的交易额,以碾转法计算最大返利值。
  3.在E列中查找小于或等于(<=)A列交易额的最大值,其对应的F列返利即为第一档的返利;以A列交易额减去已取值的交易额作为新的交易额,继续在E:F列查找小于或等于交易额的最大值对应的返利,作为第二档返利;如此碾转往复至不能再取值为止。最终的返利为各档返利之和。
  以A14单元格交易额4879为例:
    第一档:4879>=2650,对应返利180;
    第二档:4879-2650=2229>=1350,对应返利90;
    第三档:2229-1350=879>=700,对应返利45;
    第四档:879-700=179>=100,对应返利5;
    第五档:179-100=79>=0,对应返利0;
    最终返利为:180+90+45+5+0=320
答题要求:
  1.纯函数题,除在C列输入公式外,不能有其他任何操作。
  2.B列不可引用,不可使用不合理的整列、整行引用。
  3.C2单元格公式下拉,或C2:C17多单元格数组公式。
评分规则:
  1.公式长度(含等号)小于180字符的正确答案,评1技术分;
  2.公式长度(含等号)小于150字符的正确答案,评2技术分;
  3.公式长度(含等号)小于130字符的正确答案,评3技术分;
  4.其余正确答案给予适当财富奖励(小于50财富)。



竞赛日期:2019-1-4 至 2019-2-15


本帖子中包含更多资源

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

x

评分

12

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-4 19:53 | 显示全部楼层
C2单元格数组公式下拉,126字符。
  1. =INT(A2/E$9)*F$9+MAX(MOD(TEXT(MMULT(MOD(INT(ROW(1:128)/2^COLUMN(A:G)*2),2),E$2:E$8+F$2:F$8%%),"[>"&MOD(A2,E$9)+1&"]1"),1)/1%%)
复制代码

因为E2:F2都是0,对返利无影响,可以少一个字符,125字符,减少很多运算量。
  1. =INT(A2/E$9)*F$9+MAX(MOD(TEXT(MMULT(MOD(INT(ROW(1:64)/2^COLUMN(A:F)*2),2),E$3:E$8+F$3:F$8%%),"[>"&MOD(A2,E$9)+1&"]1"),1)/1%%)
复制代码

评分

6

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-5 12:15 | 显示全部楼层
本帖最后由 象山海鲜 于 2019-1-6 13:03 编辑

1.优点是,每档有多个通用
不超过2W,最大档的为5千,最多为4
  1. =-LOOKUP(1,-(0&A2*{1,0}+MMULT(-MID(BASE(ROW(A:A)-1,5,7),8-COLUMN(A:G),1),E$3:F$9)*{1,-1}))
复制代码

不能整列,加字符
  1. =-LOOKUP(1,-(0&A2*{1,0}+MMULT(-MID(BASE(ROW($1:$62501)-1,5,7),8-COLUMN(A:G),1),E$3:F$9)*{1,-1}))
复制代码



2.大众化,再加字符
  1. =INT(A2/E$9)*F$9-LOOKUP(1,-(0&MOD(A2,E$9)*{1,0}+MMULT(-ISODD(ROW($1:$254)/2^COLUMN(A:G)),E$2:F$8)*{1,-1}))
复制代码

评分

9

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-5 23:24 | 显示全部楼层
本帖最后由 LSL1128xgw 于 2019-1-6 08:59 编辑

=INT(A2/E$9)*F$9+LOOKUP(A2-INT(A2/E$9)*E$9,MMULT(--ISODD(ROW($1:$128)/2^COLUMN(A:G)*2),E$2:F$8))
=INT(A2/E$9)*F$9+LOOKUP(MOD(A2,E$9),MMULT(--ISODD(ROW($1:$128)/2^COLUMN(A:G)*2),E$2:F$8))

评分

10

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-6 10:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 丢丢表格 于 2019-1-22 10:17 编辑

122 字 ,跟VBA同解
  1. =MAX(RIGHT(TEXT(MOD(A2,E$9)-MMULT(MOD(INT(ROW($1:63)/2^COLUMN(A:F)),2),E$3:E$8-F$3:F$8%%),"[<]!0")/1%%,4)+INT(A2/E$9)*F$9)
复制代码

124 字 符合返利最大的题意
  1. =MAX(RIGHT(TEXT(MOD(A2,E$9)-MMULT(MOD(INT(ROW($1:7777)/4^COLUMN(A:F)),4),E$3:E$8-F$3:F$8%%),"[<]!0")/1%%,4)+INT(A2/E$9)*F$9)
复制代码


108 字 ,计算量大,且最大值交易额只限于 2万之内,不科学。
  1. =MAX(--RIGHT(TEXT(A2+MMULT(-MID(BASE(ROW($1:47777),6,7),COLUMN(A:G),1),E$3:E$9-F$3:F$9%%%),"[<]!0")/1%%%,6))
复制代码



问题说明:
         假如 交易额 为400 时 ,应该是 按 两个 200 算,而不能按 350 算。
        200 对应的是 12 ,那两个200 就是 12*2  =24 ,
        而不是350 所对的 20。
     还有 600 ,同样也有问题 ,应该是 3个 200 。12*3 = 36     而不是 32 。



点评

按VBA同解计算评分。  发表于 2019-7-30 17:18

评分

10

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-6 17:50 | 显示全部楼层
本帖最后由 opqazxc 于 2019-1-11 09:44 编辑

下拉``
  1. =LOOKUP(MOD(A2,E$9),MMULT(-MID(BASE(ROW($1:$127),2,7),8-COLUMN(A:G),1),-E$2:F$8))+INT(A2/E$9)*F$9
复制代码

区域``
  1. =LOOKUP(A2:A17,MMULT(INT(MOD(ROW(1:4095)/2^COLUMN(A:L)*2,2)),N(OFFSET(E1,COUNTIF(OFFSET(E2,,,ROW(1:12)),"<>"),{0,1}))))
复制代码

````
  1. =LOOKUP(A2:A17,MMULT(INT(MOD(ROW(1:4095)/2^COLUMN(A:L)*2,2)),IF(E3:E14,E2:F13,E9:F9)))
复制代码




评分

8

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-7 08:36 | 显示全部楼层
本帖最后由 江苏永能朱兴华 于 2019-1-15 14:32 编辑

=INT(A2/E$9)*F$9-MIN(-RIGHT(TEXT(MMULT(MMULT(MOD(INT(ROW($1:$128)*2/2^COLUMN(A:F)),2),E$3:F$8),{10000;1}),"[>"&MOD(A2+0.1,E$9)/1%%&"]!0"),3))

=INT(A2/E$9)*F$9+MAX(MOD(-TEXT(MOD(A2+0.1,E$9)/1%%-MMULT(MMULT(MOD(INT(ROW($1:64)*2/2^COLUMN(A:F)),2),E$3:F$8),10^{4;0}),"[<]!0"),1000))

=INT(A2/E$9)*F$9+MAX(MOD(-TEXT(MOD(A2+0.1,E$9)/1%%-MMULT(MOD(INT(ROW($1:64)*2/2^COLUMN(A:F)),2),E$3:E$8/1%%+F$3:F$8),"[<]!0"),1000))
非常规手段刚好达线,新年将到就用888祝坛友新年大发:
=INT(A2/E$9)*F$9+MAX(MOD(-TEXT(MOD(A2+0.1,E$9)/1%%-MMULT(MOD(INT(ROW(1:888)/2^COLUMN(A:F)),2),E$3:E$8/1%%+F$3:F$8),"0;!0"),1000))
=INT(A2/E$9)*F$9+MAX(MOD(-TEXT(MOD(A2+0.1,E$9)/1%%+MMULT(-ISODD(ROW(1:888)/2^COLUMN(A:F)),E$3:E$8/1%%+F$3:F$8),"0;!0"),1000))

LOOKUP函数二分法还是弄不懂,结果可以总感觉不对:
=INT(A2/E$9)*F$9+LOOKUP(MOD(A2,E$9),MMULT(MOD(INT(ROW($1:$127)*2/2^COLUMN(A:G)),2),E$2:F$8))
做竞赛题做成隋文帝了,尽其所能的抠。坐等大神们的神来之笔。




评分

10

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-8 15:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 mmlzh 于 2019-1-16 15:08 编辑

来个长公式
150
=INT(A2/E$9)*F$9-MIN((MOD(A2,E$9)>=MMULT(--MID(DEC2BIN(ROW(64:199)),COLUMN(B:G),1),E$3:E$8))*MMULT(-MID(DEC2BIN(ROW(64:199)),COLUMN(B:G),1),F$3:F$8))

=INT(A2/E$9)*F$9-MIN(MOD(TEXT(MMULT(-MID(DEC2BIN(-ROW(1:99)),COLUMN(E:J),1),F$3:F$8-E$3:E$8/1%%),"[>"&MOD(A2,E$9)/1%%&"]!0"),-10^3))

浮点问题,要把人逼疯

=INT(A2/E$9)*F$9-MIN(MOD(TEXT(MMULT(-MID(DEC2BIN(-ROW(1:99)),COLUMN(E:J),1),F$3:F$8%%-E$3:E$8),"[>"&MOD(A2,E$9)&"]!0"),-1)/1%%)

被逼疯了,来个奇葩的
=INT(A2/E$9)*F$9-MIN(MOD(TEXT(MMULT(-RANDBETWEEN(0,U1:Z999+1),F$3:F$8-E$3:E$8/1%%),"[>"&MOD(A2,E$9)/1%%&"]!0"),-10^3))




评分

10

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-8 21:04 | 显示全部楼层
=MAX(MOD(TEXT(MMULT(--MID(DEC2BIN(ROW($64:127)),COLUMN(B:G),1),E$3:E$8/1%%+F$3:F$8),"[>"&(MOD(A2,E$9)+1)/1%%&"]!0"),10^3))+INT(A2/E$9)*F$9

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-9 08:34 | 显示全部楼层
本帖最后由 我走我流 于 2019-2-19 17:36 编辑

=MAX(IF(MMULT(MID(DEC2BIN(ROW($65:$127)),{2,3,4,5,6,7},1)*TRANSPOSE(E$3:E$8),ROW(1:6)^0)<=MOD(A2,E$9),MMULT(MID(DEC2BIN(ROW($65:$127)),{2,3,4,5,6,7},1)*TRANSPOSE(F$3:F$8),ROW(1:6)^0)))+INT(A2/E$9)*F$9
=MAX(IF(MMULT(COLUMN(A:F)^0,MID(BASE(COLUMN(BM:DW),2),ROW($2:$7),1)*E$3:E$8)<=MOD(A2,E$9),MMULT(COLUMN(A:F)^0,MID(BASE(COLUMN(BM:DW),2),ROW($2:$7),1)*F$3:F$8)))+INT(A2/E$9)*F$9              176字,及格了。。再精简下
=MAX(IF(MMULT(--MID(BASE(ROW($64:$127),2),COLUMN(B:G),1),E$3:E$8)<=MOD(A2,E$9),MMULT(--MID(BASE(ROW($64:$127),2),COLUMN(B:G),1),F$3:F$8)))+INT(A2/E$9)*F$9 154字
再稍微瘦点
=MAX(MMULT((MMULT(--MID(BASE(ROW($64:$127),2),COLUMN(B:G),1),E$3:E$8)<=MOD(A2,E$9))*MID(BASE(ROW($64:$127),2),COLUMN(B:G),1),F$3:F$8))+INT(A2/E$9)*F$9 150字

评分

5

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-21 17:07 , Processed in 0.054565 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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