我想创建一个Excel公式(不使用VBA)来填充名为“Bill”的工作表,该工作表基于另一个名为“Prescription”的工作表。
我在“处方”表中有10行,其中包含标题,数量,价格和总计。我想将Quantity> 0的行复制到工作表“Bill”而不留空行。
我知道使用VBA很容易,我所要做的就是复制每一行(包括空白行),设置一个自动过滤器来隐藏0,然后添加一些VBA来刷新过滤器,但我是非常确定我可以在没有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
答案 0 :(得分:1)
MS Query怎么样?:
SELECT * FROM [Prescription$] AS S WHERE S.Qty> 0
使用数据 - >获取外部数据 - > MS查询或者您也可以使用我制作的简单加载项: http://blog.tkacprow.pl/excel-tools/excel-sql-add-in-free/
一旦执行查询,您可以随时通过右键单击并在查询表上点击刷新来刷新它。
答案 1 :(得分:0)
最后找到了一个从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),"")}