回复lts8823朋友: 原帖地址:http://club.excelhome.net/dispbbs.asp?boardid=3&replyid=481151&id=181763&page=1&skin=0&Star=2 =MAX(0,MIN(LOOKUP(COLUMN(),COLUMN($F:$I),VLOOKUP($C5,{"A",690,100,200,2000;"B",420,200,2000,2000;"C",2000,2000,2000,2000},COLUMN($B:$E),1)),$D5-SUM($E5:E5)))
先看绿色部分Vlookup函数:第一个参数C5,是类别里面那些A、B、C、D等等;第二个参数是自己构造的一个三行五列的数组,其中第一列就是"A","B","C",其他列的那些数字就是根据帖子楼主要求的a、b、c、d列(即F~I列)允许的最大值;第三参数是一个数组{2,3,4,5},指的是查找到时返回数组的第2、3、4、5列的数据;第四个参数为1,指的是模糊查找,当C5不为A或B或C时,比如D、E、F等等时,可以返回与C一样的数值。这部分绿色的公式,可以通过下面一个附件里的辅助区域来表达,看这个附件能够更好的理解这段公式。
uKs9AFb0.rar
(2.18 KB, 下载次数: 136)
最后来看最外面的max函数,这部分是根据帖子楼主最后的要求:如果不够减,不要返回负数而要返回零,根据这个要求,就用函数max()处理,如果前面公式部分返回的是负值,就取0,否则就取返回值。这部分比较简单,就不再加附件了。 说了这么多,也不知道大家有没有看懂。我也只能解释到这里了,不明白的地方还是多在论坛查找相关帖子进行学习吧。祝大家天天有收获! 汗,解释公式比写公式累多了,以后不太敢写这么繁复的公式了。
|