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-1-9 13:37 | 显示全部楼层
这么快第一页已经没位了,抱歉我先占个位,公式随后再上传

补充内容 (2019-1-13 22:17):
怎么不能修改了?

补充内容 (2019-2-16 00:00):
这一次我一定能做出来,请稍等一下,我正在做

补充内容 (2019-2-16 01:45):
=SUMPRODUCT(F3:F9,G3:G9)
G3:G9这个数组构造了半天不成功。明天再试试

补充内容 (2019-2-16 10:04):
还是没搞出来,人老了。学习能力下降了。如果不开贴我再搞搞

补充内容 (2019-2-17 21:32):
动态数组搞不出来,我用笨办法,一个一个写出来,大不了公式长点

补充内容 (2019-2-17 21:32):
动态数组搞不出来,我用笨办法,一个一个写出来,大不了公式长点

补充内容 (2019-2-17 21:33):
上面怎么发一条,出两条呀

补充内容 (2019-2-18 01:46):
试了,一个一个写公式不行,只能构造数组。看了一些别人的贴,似乎要用mmult函数

补充内容 (2019-2-19 17:10):
还没有开贴,该不会是等我吧?那就再等等,我已有了新的想法,一定能做出来

补充内容 (2019-2-23 11:36):
还没有开贴,我还有希望。算法其实很简单,就是不大会用数组构造。我再试试。。。

补充内容 (2019-2-23 11:49):
考虑再三,数组中必须要用变量,因此要借用某个单元格区域,但题目又不让用,再想想。。

补充内容 (2019-2-24 08:30):
看来我要认输了,我的算法中要在数组中用变量,给变量赋值等等,这些我都无法做到。网上也没有查到相关资料

补充内容 (2019-2-24 08:31):
我只好看看高手如何解决了

补充内容 (2019-2-24 08:35):
吧我做了一半的公式发出来,希望大侠指教
=SUMPRODUCT($F$3:$F$9,A2+0*ROW(1:7)-IF({1;1;1;1;1;1;0},E9*INT(A2/E9),0))

补充内容 (2019-2-24 08:40):
把我做了一半的公式发出来,希望大侠指教
=SUMPRODUCT($F$3:$F$9,int(A2+0*ROW(1:7)-IF({1;1;1;1;1;1;0},E9*INT(A2/E9),0))/$E$3:$E$9)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-9 22:10 | 显示全部楼层
本帖最后由 sayhi95 于 2019-1-26 11:27 编辑

直观算法还是比较长
  1. =SUM(IF(ROW($1:7)<7,IFNA(MOD(INT(MATCH(MOD(A2,E$9),MMULT(MOD(INT(ROW($1:$63)/2^COLUMN(A:F)*2),2),E$3:E$8))/2^ROW($1:6)*2),2),),INT(A2/E$9))*F$3:F9)
复制代码
  1. =MAX((MMULT(MOD(INT(ROW($1:$63)/2^COLUMN(A:F)*2),2),E$3:E$8)<=MOD(A2,E$9))*MMULT(MOD(INT(ROW($1:$63)/2^COLUMN(A:F)*2),2),F$3:F$8)+INT(A2/E$9)*350)
复制代码
终于突破了,非数组公式
  1. =LOOKUP(MOD(A2,E$9),MMULT(MOD(INT(ROW($1:$127)/2^COLUMN(A:G)*2),2),E$2:F$8))+INT(A2/E$9)*F$9
复制代码

评分

7

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-10 15:13 | 显示全部楼层
本帖最后由 hno3861 于 2019-1-12 22:38 编辑

=INT(A2/E$9)*F$9+MAX(MOD(-TEXT((MOD(A2,5000)+1)*10^8-(MMULT(TRANSPOSE(LEFT(RIGHT(0&DEC2BIN(COLUMN(A:BM)-1),ROW($1:$6)))*(E$3:E$8*10^8+F$3:F$8)),1^ROW($1:$6))),"[>];\0"),10^8))
。177个字符
改了下,168,不知到会不会错,可能思路受限,无法缩减到150。

=INT(A2/E$9)*F$9+MAX(MOD(-TEXT((MOD(A2,E$9)+1)*10^8-(MMULT(TRANSPOSE(MID(DEC2BIN(COLUMN(A:BK),6),ROW($1:$6),1)*(E$3:E$8*10^8+F$3:F$8)),1^ROW($1:$6))),"[<]\0"),10^8))
计算规则规定必须先大后小,是没问题的。但是感觉400的时候,按照两个200返利,比按照350要划算,这可能是商家促销漏洞(`O′) 我随便说说的,各位不必太在意  O(∩_∩)O~


补充内容 (2019-1-17 09:00):
又改了下,140个字符。
=INT(A2/E$9)*F$9+MAX(MOD(-TEXT(MMULT(-MID(DEC2BIN(ROW($1:$63),6),COLUMN(A:F),1),E$3:E$8*10^8+F$3:F$8)+(MOD(A2,E$9)+1)*10^8,"[<]!0"),10^8))

补充内容 (2019-1-17 17:05):
上边的138字符,用百分号可以缩减成136。但是新写了一下,128,完成任务了。
=INT(A2/E$9)*F$9-MIN(-RIGHT(TEXT(MMULT(-MID(DEC2BIN(ROW($1:$63),6),COLUMN(A:F),1),E$3:E$8-F$3:F$8%%)+MOD(A2,E$9),".0000;!0"),4))

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-12 11:50 | 显示全部楼层
本帖最后由 梦幻小丑 于 2019-2-1 22:29 编辑
  1. =MAX(MMULT(--TEXT(MMULT(--MID(BASE(ROW($1:$390624),5,8),COLUMN(A:H),1),E$2:F$9),IF({1,0},"[<="&A2&"]!0;-0",)),{1;1}))
复制代码


上面的公式很卡,根据交易额返利的数据特性,我将取值范围缩小些,改成了下面的公式,速度要快很多。

  1. =MAX(,MMULT(-TEXT(MMULT(-MID(BASE(ROW($1:$22659),5,8),COLUMN(A:H),1),E$2:F$9),IF({1,0},"[>="&-A2&"]!0",)),{1;1}))
复制代码


评分

5

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-13 08:43 | 显示全部楼层
本帖最后由 jivy1212 于 2019-1-30 09:55 编辑

解法一:通过二进制法转内存数组。
  1. =SUM(MID(BASE(64-MATCH(1=1,MMULT(MID(BASE(64-ROW($1:$64),2,6),7-COLUMN(A:F),1)*1,E$3:E$8)<=MOD(A2,E$9),),2,6),7-ROW($1:$6),1)*F$3:F$8)+INT(A2/E$9)*F$9
复制代码

解法二:直接搞内存数组,140长。。
  1. =SUM(MOD(INT(64-MATCH(1=1,MMULT(MOD(INT(-ROW($1:$64)/2^COLUMN(A:F)*2),2),E$3:E$8)<=MOD(A2,E$9),)/2^ROW($1:$6)*2),2)*F$3:F$8)+INT(A2/E$9)*F$9
复制代码
换个技巧,普通公式。终于进130了,要脑抽了:
  1. =MAX(MMULT(-TEXT(MOD(A2,E$9)*{1,0}-MMULT(MOD(INT(-ROW($1:$64)/2^COLUMN(A:F)*2),2),E$3:F$8),"!0;0"),{100;-1}))+INT(A2/E$9)*F$9
复制代码





评分

6

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-15 17:18 | 显示全部楼层
  1. =INT(A2/E$9)*350+(MOD(A2,E$9)>=E$8)*180+(MOD(MOD(A2,E$9),E$8)>=E$7)*90+(MOD(MOD(MOD(A2,E$9),E$8),E$7)>=700)*45+LOOKUP(MOD(MOD(MOD(MOD(A2,E$9),E$8),E$7),700),{0,100,200,300,350,450,550,650},{0,5,12,17,20,25,32,37})
复制代码
我用笨方法列出了所有的结果  还是太长 218个字

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-17 11:08 | 显示全部楼层
本帖最后由 hno3861 于 2019-1-17 17:06 编辑
hno3861 发表于 2019-1-10 15:13
=INT(A2/E$9)*F$9+MAX(MOD(-TEXT((MOD(A2,5000)+1)*10^8-(MMULT(TRANSPOSE(LEFT(RIGHT(0&DEC2BIN(COLUMN(A: ...

上边的是138字符,可以用百分号再缩减一下。这次终于缩减完成了,希望无误,128字符,普通公式。
  1. =INT(A2/E$9)*F$9-MIN(-RIGHT(TEXT(MMULT(-MID(DEC2BIN(ROW($1:$63),6),COLUMN(A:F),1),E$3:E$8-F$3:F$8%%)+MOD(A2,E$9),".0000;!0"),4))
复制代码


点补充点成回复了,谁可以帮我删除本层?我自己删不掉?


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-19 19:04 | 显示全部楼层
本帖最后由 micch 于 2019-1-21 09:25 编辑
  1. =SUM(VLOOKUP(N(IF(INT(MOD(LOOKUP(MOD(A2,5000),MMULT(INT(MOD(ROW($1:$255)*2/2^COLUMN(A:H),2)),E$2:E$9),ROW($1:$255))*2/2^ROW($1:$8),2)),E$2:E$9)),E:F,2),INT(A2*2%%)*F$9)
复制代码
C2,数组,又是不确定对错,还需验证;
简化一下,两个相同公式
  1. =SUM(LOOKUP(ROUND(MOD(A2,E$9),),MMULT(INT(MOD(ROW($1:$255)*2/2^COLUMN(A:H),2)),E$2:F$9)),INT(A2*2%%)*F$9)
复制代码
或者
  1. =SUM(LOOKUP(MOD(A2,E$9),MMULT(INT(MOD(ROW($1:$255)*2/2^COLUMN(A:H),2)),E$2:F$9)),INT(A2/E$9)*F$9)
复制代码




评分

6

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-21 14:38 | 显示全部楼层
本帖最后由 titi012 于 2019-1-21 17:07 编辑

先凑一个,后面再看看能否减下来

  1. =ROUND(MAX(MOD(-TEXT(MOD(A2,E$9)+1-MMULT(COLUMN(A:G)^0,LEFT(RIGHT(0&DEC2BIN(COLUMN(A:DW)),ROW($1:$7)))*(E$2:E$8+F$2:F$8*1%%)),"[<]\0"),1)/1%%),)+INT(A2/E$9)*F$9
复制代码

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-23 16:17 | 显示全部楼层
103字符
=INT(A2/E$9)*F$9+VLOOKUP(MOD(A2,E$9),MMULT(--MID(DEC2BIN(ROW($1:$255),8),9-COLUMN(A:H),1),E$2:F$9),2,1)

评分

4

查看全部评分

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

本版积分规则

关闭

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

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

GMT+8, 2024-4-24 13:14 , Processed in 0.045339 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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