2012-12-16 40 views
0

我有一個龐大的數據轉儲,我們每個月都有大約14,000行數據,大約12列寬(每個月的條目)。在所有數據的左側,我添加了一個使用LEFT()函數獲取屬性代碼的列,該代碼標識了該行對應的屬性(每個屬性大約150行,大約100個屬性,因此爲15,000行)。VBA有條件複製並粘貼到Excel中;大數據解決方案

我們爲每個屬性都有一個工作表。我們每個月都會使用此數據轉儲對其進行更新,然後將其發送給經理,以便他們可以根據我們剛添加的數據月份對今年餘下時間進行預測。

我一直在努力創建一個比我的前任更高效的模型。他在每張涉及這個巨大數據轉儲的表單上都做了v-查找和索引。正如你所猜測的,文件運行速度很慢。

我對解決方案的想法可能是複製並粘貼來自此主表單中每個屬性的數據行並將其粘貼到各個工作表(然後刪除數據以將文件保存一些空間)的宏。

這樣,每個工作表的v-查找將是本地的,文件可能運行更平穩(除了運行宏的第一個序列,這可能需要一些comp空間)。

我希望得到一些關於這方面的見解,如果解決方案是一個有效的解決方案,也許建議編碼來實現這一點。

非常感謝!

回答

0

我發現加快我的工作簿的一件事是轉移我的數據,然後查詢數據透視表而不是使用vlookups。

對於您的情況,您可以使用行標籤的屬性ID /名稱,列標籤的月份以及數據部分中的數據創建數據透視表。

那麼你的公式看起來像下面這樣:

=GETPIVOTDATA("value",Sheet1!$B$4,"Property","propertyName","Month","monthName") 

這對60K行使用大量vlookups的時候幫助了我。 這確實意味着每次數據更新時更新數據透視表的額外步驟,但我認爲工作簿的速度應該從中受益。

顯然直接在表單上存儲數據會更好,但編寫一個腳本來做到這一點可能非常繁瑣和耗時。

+0

感謝瑞克,我不太喜歡數據透視表,但我正在試用我們的入住率表,因爲它似乎適用。非常感謝! – mburke05

0

我需要電子表格的一些更詳細的建議大的重構,但一些東西,可以很快完成是使用VLOOKUP的多列屬性:

=VLOOKUP(Lookup_value, Table_array, {1, 2, 3}, 0) 

以上將返回列1,2和3個數組。您需要在3個單元格中輸入數組公式CTRLSHIFTENTER,但如果您使用相同的查找值進行多個查找但返回不同的列,則會有很大的性能增強。

+0

謝謝菲利普,非常酷的解決方案!我不知道這件事。 – mburke05