买一送一问题
前言
做电商的朋友问我一个问题,如某商品促销买1送1,或买3送2,如何根据购买数量计算出实发数量,发给我的表格是这个样子的:(实际更复杂,我做了简化,使之更具普遍性)
1分析
这道题,作为数学题计算起来并不复杂,但这样的表格让EXCEL自动算出来还是比较让人头疼的。
首先“买几送几”是和货物名称混在一起的,EXCEL对文本的识别能力比较差,需要把具体的数字提出来,否则无法计算。庆幸的是“买几送几”在这个表中还算规整,还是具备操作空间的。
接下来就是把买和送的数字分别拎出来,便于后面的计算。
这里就要用到文本函数了,文本函数中MID函数可以在一串字符中提取出来你想要的一个和多个字符,用法如下:
MID(字符串,从第几个字符取,取几个字符)
如:取“EEE买3送2”字符串中的第6个字符
MID(“EEE买3送2”,6,1)=”送”
取“EEE买3送2”字符串中的从第4个字符起,共取4个字符
MID(“EEE买3送2”,4,4)=” 买3送2”
还有一个函数经常用到,因为你不知道你要取的字符在第几个,你必须先找到它的位置,才好做下面的文章。
FIND函数可以返回一个字符或字符串在另一个字符串中的位置。
FIND(要查找的字符串,所在的字符串,从第几个字符查找), 最后一个参数可以省略,默认从第一个字符查找。
如:查找”送”在“EEE买3送2”字符串中的位置
FIND(“送”,” EEE买3送2”)=6,即“送”在字符串” EEE买3送2”中的第6个字符。
找到“送”这个字符的位置之后,前面一个数字和后面一个数字就是我们需要查找的买几送几的数字了。
2开整
我们可以将MID和FIND 结合起来用:
D2=MID(A2,FIND("送",A2)-1,1)
E2=MID(A2,FIND("送",A2)+1,1)
当我们下拉往下复制公式时,会出现#VALUE!错误值,这是因为在字符串中查找不到我们要找的字符时就会出错。要消除这种错误值,我们必须把IFERROR函数搬出来,任何错误值都能被他屏蔽掉,用法如下:
IFERROR(原公式,””)
解释:如果原公式没有错误值,则返回原公式的结果,否则返回第二个参数值,可以是任意值,这里我们显示成””,即空值。
修正后:
下面就顺理成章了:
C2=IF(D2="",B2,B2+INT(B2/D2)*E2)
解释:INT为取整函数,是把小数位直接去掉,如INT(1.1)=1; INT(1.9)=1
公式的意思为:如果D2为空值,意味着没有促销活动,实发数量就等于购买数量,否则就等于购买数量加上赠送数量。
赠送数量怎么算的,如果你真不明白,可能真不适合做这行了。
知识点
MID
FIND
IFERROR
IF
INT
相关链接:
END