复制Qty> 0的行

我想创build一个Excel公式(不使用VBA)来填充名为“Bill”的表单,该表单基于名为“Prescription”的另一个表单。

例如,在“处方”表中有10行,列标题,数量,价格和总计。 我想将数量> 0的行复制到工作表“Bill”,而没有任何空行。

我知道使用VBA很容易,我只需要复制每一行(包括空白行),设置一个自动filter来隐藏0,然后添加一些VBA来刷新filter,但我很确定我可以做到这一点没有VBA(也许有一个数组公式或东西来获得第N个非0值)。

所以这是“处方”:

Title|Qty|Price| Total ---------------------- Test1| 0|99.99| 0 Test2| 1|99.99| 99.99 Test3| 0|99.99| 0 Test4| 3|99.99|299.97 

我想要一个公式得到另一个表:

 Title|Qty|Price| Total ---------------------- Test2| 1|99.99| 99.99 Test4| 3|99.99|299.97 

MS Query如何?

 SELECT * FROM [Prescription$] AS S WHERE S.Qty> 0 

使用数据 – >获取外部数据 – > MS查询或你也可以你一个简单的加载项,我做了: http : //blog.tkacprow.pl/excel-tools/excel-sql-add-in-free/

一旦执行查询,您可以随时通过右键单击并在查询表上进行刷新来刷新该查询。

最后find一个从Microsoft KB数据库执行作业的数组公式: http : //support.microsoft.com/kb/101167

最终的公式:

 ={IFERROR(INDEX(Prescription!$I$1:$I$100,SMALL(IF(ISEMPTY(Prescription!$K$1:$K$100),"",ROW(Prescription!$K$1:$K$100)),ROW(2:2))-ROW(Prescription!$K$1:$K$100)+1),"")}