我有多个母产品的变体(不同大小,颜色)的产品价格清单。有些产品(对于这个问题不重要的原因)的价格为零。
我正在尝试编写一个excel公式,它将返回每个非零产品的最低价格
我到目前为止:
= IF(SUMIFS(I:I,A:A,A3)= 0,0,IF(AND(SUMIFS(I:I,A:A,A3)大于0,MINIFS(I:I,A :A,A3)大于0),MINIFS(I:I,A:A,A3),SMALL(IF(A:A = A3,I:I)中,2)))
我在哪里:我是价格列,A:A是父参考栏
这适用于所有情况,除非我有多个父产品的变体具有零值。
我需要SMALL或MINIF函数中的变量: A.仅包括计算中单个父产品的值 B.在计算最低值
时忽略任何零任何帮助都将不胜感激。
答案 0 :(得分:2)
您可以使用数据透视表轻松创建动态最小值列表。默认情况下会忽略空白单元格,并且可以通过几种方式排除零(或您想要的任何其他数字);我认为最简单的方法是使用数据透视表的过滤器功能。
他们说一张图片胜过千言万语,所以动画GIF必须价值一百万...... :)
Office.com:Filter data in a PivotTable
Office.com:Display or hide zero values
答案 1 :(得分:1)
如果输入数据是根据父参考级别排序的,您可以简单地
SMALL
公式(即最小值)将其放在第1行
=IF(SMALL(OFFSET($I$1,MATCH(C1,$C:$C,0)-1,0,COUNTIF($C:$C,C1)),1)=0,SMALL(OFFSET($I$1,MATCH(C1,$C:$C,0)-1,0,COUNTIF($C:$C,C1)),2),SMALL(OFFSET($I$1,MATCH(C1,$C:$C,0)-1,0,COUNTIF($C:$C,C1)),1))
答案 2 :(得分:0)
您可以使用传统的'数据透视表可以做到这一点。见ashleedawg的好答案。
您还可以使用' OLAP' PivotTable基于称为数据模型的东西来实现它,它比传统的数据模型具有一个小优势。数据透视表,您不需要在刷新后清除PageFilter。 (在我的答案的底部更多关于这一点)。
Excel 2013中的任何Excel版本都会默认内置DataModel,如果您安装Microsoft的免费PowerPivot加载项,您还可以在2010年访问DataModel。使用DataModel,您需要做什么:
使用 Ctrl + T 键盘快捷键将数据转换为Excel表格:
从中创建一个数据透视表,但一定要检查将此数据添加到数据模型选项:
将“组”添加到数据透视表的“行”窗格,然后在字段窗格中右键单击“表1”并选择添加度量... :
为新测量指定一个名称(我将其命名为Min Without Zero)并在公式框中键入=CALCULATE(MIN(Table1[Price]),Table1[Price]>0)
,然后按OK:
在数据透视表字段列表中勾选Min Min Zero复选框。
秉!数据透视表按价格显示每组的最小值(不包括零)。
编辑:如果我自己这样做,我可能会使用ashleedawg的回答。但有一点需要注意:如果您将来添加其他数据并刷新,则需要清除过滤器并重新应用零排除,以确保包含数据中的任何新数字。通过演示,如果我从PageField中过滤掉零,那么我只得到我期望的结果:
...以及过滤器的外观如下:
但是如果我添加新数据并刷新,请注意数据透视表中没有任何变化:
......如果我看过滤器,我可以看到原因:
那是因为当您从过滤器中取消选择某些内容时,您实际上并没有说过#34;除了这件事情之外,还给我一切"而是#34;在此列表中显示其他目前目前的内容,但不要选择任何新内容。"
很容易修复:只需清除过滤器并再次取消选择零(或者写一些VBA代码以便在刷新时自动执行)。
答案 3 :(得分:0)