ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[推荐] 谢谢强悍的 liuzj2s大侠帮我写好的冲退货的公式,简直是神来之笔,继续求指点

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-28 13:41 | 显示全部楼层
F        -2        -2
F        -3        -3
F        4        -2   前面两个都是负数,没法再往上冲了,因此止步到此
F        -1        0
F        -5        0
果然是啊,又不适用了...真是辛苦你了

[ 本帖最后由 mrfox 于 2009-8-28 13:46 编辑 ]

sumproductv5.rar

5.64 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2009-8-28 13:47 | 显示全部楼层
那么这样呢

sumproductv1.rar

5.36 KB, 下载次数: 28

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-28 14:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
哇塞,你是我心中的MVP!!!我仍然在费力地理解这个公式,深深地被你的逻辑折服。
=MAX(IF(NOT(SUMPRODUCT(-(A1:A$2=A2),-(B1:B$2>0)))+(COUNTIF(A$2:A$33,A2)=COUNTIF(A2:A$33,A2)),MIN(B$2:B$33)),B2-SUMPRODUCT(-(A3:A$33=A2),B3:B$33-D3:D$33))

SUMPRODUCT(-(A3:A$33=A2),B3:B$33-D3:D$33),这里我负号应该如何理解呢

TA的精华主题

TA的得分主题

发表于 2009-8-28 14:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
-总是取相反数

B2-SUMPRODUCT(-(A3:A$33=A2),B3:B$33-D3:D$33))



B2+SUMPRODUCT(--(A3:A$33=A2),B3:B$33-D3:D$33))

是一样的

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-28 16:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
此楼解读有误,删除

[ 本帖最后由 mrfox 于 2009-8-29 00:43 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-8-28 16:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
-True  =  -1
-False = 0

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-28 16:26 | 显示全部楼层
谢谢,我继续想,我在25楼拆得还是不对,应该是MAX对公式中的两部分进行比较找最大值:
IF(NOT(SUMPRODUCT(-(A$2:A31=A32),-(B$2:B31>0)))+(COUNTIF(A$2:A$33,A32)=COUNTIF(A32:A$33,A32)),MIN(B$2:B$33)), 这里似乎省略了不满足条件时的结果                                                                               
B32-SUMPRODUCT(-(A$33:A33=A32),B$33:B33-D$33:D33)

UPDATE:通过附件中的公式分解,证明拆得是正确的,白天没想到IF的结果需要转换一下(究竟为什么要转换我也不知道),又快一点了,明天有时间再研究剩下的

[ 本帖最后由 mrfox 于 2009-8-29 00:48 编辑 ]

sumproductvnu.rar

6.4 KB, 下载次数: 6

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-31 11:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
将公式进一步分解,目前我正试图找出这个公式包含的N种情况的不同公式,然后能总结成一个图,类似这样的:
max.jpg

sumproductd2.rar

7.45 KB, 下载次数: 8

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-1 11:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我又重写了一下规则,请明白这个公式的人看看我写得对不对?到现在为止我还没搞懂,唉

规则:
倒着看值的那一列,首笔是指这列的第一个数,原值意思是结果等于原来的值

零、ABC等所有的值非正即负,没有零值
一、末笔是正数的话,得原值
末笔是负数的话,得0——即向前冲减根据大侠在32楼的指点,首笔末笔中间值的判断是不必要的,如果分的话,只有一个负数的情形时算是首笔还是末笔呢?我在继续改我这个规则,什么时候改成跟正确的一样的,可能就学会思考了
二、对非末笔的某个数来说,后面的数的和有三种可能的结果,正负和零。
(一)后面的和为正
        1. 本身为正,原值
2. 本身为负
a. 且为首笔,原值
b. 非首笔,但前面全是负数,原值
c.非首笔,但前面有正数,0
(二)后面的和为负
        1. 本身为正
                a. 且为首笔,原值+后面的和
                b. 非首笔,但前面全是负数,原值+后面的和
                c. 非首笔,但前面有正数,且原值的绝对值比后面的和的绝对值小,0
                d. 非首笔,但前面有正数,且原值的绝对值比后面的和的绝对值大,原值+后面的和
        2. 本身为负
                a. 且为首笔,原值+后面的和
                b. 非首笔,但前面全是负数,
(三)后面的和为零
        1. 本身为正,原值
        2. 本身为负
a. 前面全是负数,原值
b. 前面有正数,0

[ 本帖最后由 mrfox 于 2009-9-1 15:47 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-1 12:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
从直觉上我感觉我在LS写的这个规则跟 liuzj2s大侠写的公式的思路是不一样的,他的只是两个结果取最大值,当然IF的结果可能又有多种情况(有多少种我还没分析出来),即他已经把各种情况都搞清楚了才写的,而我就是跟不上思路啊
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-12-24 04:34 , Processed in 0.032343 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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