EXCEL 里用多重条件相等时怎么求对应不同值?
发布网友
发布时间:2022-12-11 06:56
我来回答
共5个回答
热心网友
时间:2024-08-14 09:38
总思路:用sumif()函数统计当天总量,再用hlookup()嵌套match()函数确定对应价格。
具体步骤:(设重量=数量,且重量最小取0.1kg)
1、统计当天总量。
(1)生成参考数组:在第一行下方插入一行,填入各等级的下限值(0,3.1,6.1,12.1,20.1)到B2-F2。
(2)统计当天总量:
(i)先在数量列后插入三个新列作辅助列,第一列在K3中输入以下公式并填充公式到该列其余单元格:
=H3&I3
(ii)第二列L3中输入以下公式并填充公式到该列其余单元格:
=SUMIF($K$3:$K$10,K3,$J$3:$J$10)
2、确定各产品售价。
(1)用match()函数生成hlookup()函数需要的第三个参数(需要显示结果的行数)。在第三列辅助列M3中输入以下公式并填充公式到该列其余单元格:
=MATCH(I3,$A$3:$A$4)+1
(2)用hlookup()函数生成当天总量对应的产品价格。在价格列N3中输入以下公式并填充公式到该列其余单元格:
=HLOOKUP(L3,$B$2:$F$4,M3)
3、收尾工作。两种参考方法:
(1)将辅助列、辅助行隐藏。(公式仍然可行,可使用填充柄)
(2)将价格列选择性粘贴数值到原位置,删除各辅助行、列。(同时公式丢失,不推荐)
注意事项:
1、第一个辅助列的目的是区分同一天不同的产品对应的数量,该列格式可以不用考虑,仅起参考对比作用。
2、hlookup()函数、match()函数中的范围项需要根据产品种类的多少进行修改,也可通过定义区域名称动态更新(结合offset()函数)。
热心网友
时间:2024-08-14 09:38
若用公式的话,可以考虑用一临时列计算出当天同一产品的重量(如放在N列),则N10
=sumproct((h2:h10=h10)*(i2:i10=i10)*j2:j10)
然后,再建一临时列O,根据质量用IF函数分段,O10
=IF(N10<=3,1,IF(N10<=6,2,IF(N10<=12,3,IF(N10<=20,4,5))))
再用查表函数 计算价格
K10单元格就应该为
=vlookup(i10,a2:f3,o10+1)
L10为
=K10*J10
以上方法要建2临时列(如不建,则公式会相当长,甚至溢出),比较烦琐
如有能力用VBA自定义函数是最好的
热心网友
时间:2024-08-14 09:39
用公式不大容易(估计分类汇总加公式可行),用VBA很简单,你还需要提供一样东西,就是每个产品的重量,我看你的表格里只有数量,那么无法计算购买X个产品的重量是多少,因为你的单价是根据重量来定的,只有知道当天累计的重量才能给他定价。如果有条件尽量给提供你的原始表格,别人帮你做好后,你自己拿去就可以用。
已经发到你邮箱里了。
热心网友
时间:2024-08-14 09:39
K2=LOOKUP(SUMPRODUCT(($A$2:$A$9=A2)*($E$2:$E$9=E2)*$D$2:$D$9),{0,3.01,6.01,12.01,20.01},OFFSET(Sheet2!$C$2:$G$2,MATCH(E2,Sheet2!$H$3:$H$100,0),0))
往下拉即可。
热心网友
时间:2024-08-14 09:40
凑下热闹:
K2=LOOKUP(SUM(($H$2:$H$9=H2)*($I$2:$I$9=I2)*$J$2:$J$9),{0,4,7,13,21},OFFSET($B$1:$F$1,MATCH(I2,$A$2:$A$3,),))
按ctrl+shift+enter输入,下拉填充。