2014-10-27 51 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