2012-02-10 287 views
0

我想從類似SQL的模式的Excel工作表中獲取數據。意思是,我有以下列:code, type, name, product_code, price, quantityExcel VBA「Group by」類似的選擇

我想要做的就是從這個表獲得的數據就像是一個數據庫表,我執行以下命令:

select code, type, name, product_code, sum(price), sum(quantity) from table 
group by code, type, name, product_code 

我怎樣才能做到這一點的VBA?

+0

當你說「通過代碼,類型,名稱,產品名稱分組」時,是指將所有行按代碼排序,然後按類型,名稱和產品代碼進行排序?此外,什麼是列(即列A中的代碼等?)。什麼是總和(價格)和總和(數量)? – frenchie 2012-02-10 10:35:31

回答

5

通過code, type, name, product_code來訂購您的數據,然後編寫一個循環遍歷工作表中的每一行,然後進行聚合。當這四個字段中的任何一個改變了值時,你就在一個新的組中,所以寫下你當前的聚集並在當前行重新開始。

據我所知,還沒有任何方法可以在VBA中針對Excel工作表編寫SQL;你只需自己寫循環。


就個人而言,我會避免VBA並使用數據透視表。

+0

+1這是一個解決方案:) – 2012-02-10 10:33:27

+0

+1數據透視表完全是這樣的 – 2012-02-10 12:09:14

+1

在Excel中使用帶有組織數據的SQL,無論是使用ADO還是通過鏈接到數據庫,都沒有任何困難:http://support.microsoft的.com/KB/257819 – Fionnuala 2012-02-10 15:43:56

1

您可以使用Access SQL查詢工作表,例如, using ADO classic。但是,因爲數據類型是在運行時使用數據和註冊表鍵的當前狀態確定的(這可能會導致值被強制爲錯誤的類型和/或無法強制值的空值),所以導入可能更好將數據放入SQL數據庫中的表中,以便可以在設計時指定數據類型,SQL Server非常適合。

0

SQLite for excel會讓你在內存中執行它。我不完全確定LINQ提供給.NET人羣的是什麼,但似乎你可以使用SQLite來模擬其中的一些。我用它只是驗證它的工作原理,但還沒有到周圍建立一個實用程序類。