2014-10-27 57 views
0

我想创建一个Excel公式(不使用VBA)以基于名为“处方”的另一张表填充名为“Bill”的工作表。复制具有数量> 0的行

我有例如工作表“处方”中的10行,列标题,数量,价格和总数。我想将数量> 0的行复制到工作表“Bill”,而没有任何空白行。我知道使用VBA很容易,我所要做的就是复制每一行(包括空白行),设置一个自动过滤器来隐藏0,然后添加一些VBA来刷新过滤器, m非常确定,我可以在没有VBA的情况下做到这一点(也许使用数组公式或者获得第N个非零值的东西)。

因此,这是 “处方”:

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 

回答

0

终于找到一个数组公式,确实从微软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),"")} 
1

如何MS查询?:

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

使用数据 - >获取外部数据 - > MS查询或者你也可以通过我自己的一个简单的插件: http://blog.tkacprow.pl/excel-tools/excel-sql-add-in-free/

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

+0

我想Excel将自动更新(这是使用的advatange Excel公式)。我会进一步看看SQL,因为我甚至都不知道这在Excel中是可行的。另请注意,我处于商业环境中,可能无法激活加载项。 – dnLL 2014-10-27 13:23:18

+0

当然。我相信你可以使用公式来做到这一点,但它会更复杂。您也可以尝试使用过滤的数据透视表。至于Add-In-xlam加载项应该在商业环境中工作(它们只是一个简单的Excel文件,没有可见的工作表)。无论如何,可以打开文件来查看实际的代码而不启用它。我通常使用SQL,因为与编写复杂的公式相比,它非常简单和简洁。 – 2014-10-27 13:43:07