2012-06-27 52 views
-1

我有一個片A,看起來是這樣的:Excel VBA中從一個表複製到其他

Name  Phone Number Title   Id 
Ron  08900108  Carpenter  440 
Bob  48951230  Painter  830 
Ron  14890560  Carpenter  561 
Steve 98023023  Carpenter  112 

,並呼籲匠另一片(和另一個叫畫家在相同的格式)

Name  Phone Number Id  Comment 
Ron  08900108  440 Cool dude 
Bob  48951230  830 Less Awesome Dude 

我想將A的行復制到名爲Carpenter和Painter的工作表中,將名稱,電話號碼放在與現有ID相同的行上(例如,如果有人更改了號碼)或添加新行,如果它是新的ID。我想保留現有的評論。

由於我在VBA中沒有任何經驗,可以通過提供解決問題的代碼或關於使用哪些函數(?)和其他語言構造以及我可以在哪裏找到關於它們的信息的提示來幫助我。

我想我需要遍歷A中的行並將其複製到一個數組中,並以某種方式發送給正確的表單。

+0

投票關閉/ downvote護理詳細說明? –

回答

1

首先,考慮一下這樣的事實,即您正在使用Excel進行通常與數據庫相關的操作,並且可以使用Access輕鬆完成操作。 我越來越注意到Excel被用作數據表的事實。雖然在某些情況下這可能是實用的,但我們不要忘記,Excel的主要功能是電子表格而不是數據庫。

如果你還是堅持在Excel這樣做,有很多方法可以做到這一點:

1)加載源範圍到一個數組,以及命運的範圍。開始比較兩個加載的數組並隨意執行操作;當需要設置新的ID時,可以動態擴展數組,並使用ubound(array)來檢索數組的大小。您也可以使用陣列的大小作爲輸入參數動態設置範圍。由你來弄清楚你的情況需要如何完成。

2)爲每個表單創建一個自定義自維持類,該類返回表示記錄的實例字典。字典允許關鍵的財產使用。這也可以作爲進一步操作的基礎。它可能看起來很怪異,但它可以工作,但我不會將它用於海量數據)。 好處是,這個類相當靈活,並且可以在稍後使用非常有限的代碼輕鬆地再次調用。

3)使用ADODB在工作表上執行查詢(不要忘記引用庫)。 ADODB允許您將Excel工作表視爲表格,其中工作表的第一行被視爲字段標題。

任何這些方法最終都可以正常工作,但是對自己來說很難。 正如我所說,訪問,如果更好,因爲你可以創建一個基於外鍵的關係表。 如果您在Excel中需要這些數據,這不是問題,因爲您仍然可以在Excel之間創建連接 - 使用ADO訪問。

對不起,把它作爲回覆,但由於我不經常在堆棧溢出,我不能發表評論。 儘管我不能爲你寫代碼,但我希望這可以幫助你。

+0

謝謝!其實不是我堅持使用它,我擴展了一個已有的功能豐富的電子表格(爲了給你提供一個簡單的例子,也是敏感材料),啓動測試運行等等。所以我真的沒有選擇。 我想我會去解決方案1,似乎是最好的和最簡單的,我沒有更多的依賴項實現。 –

+0

祝你好運;-)爲什麼我提供其他解決方案只是因爲我們都知道快速代碼的增長速度以及所有數組的東西,所以在幾年之後擴展更多時,它會變得非常糟糕。 – Trace

+1

是的,希望在幾年後他們會改變整個程序。從頭開始做好事。我不是很喜歡在編程中使用Excel。有沒有其他的使用Python的excelfile exctracting。我想這是管理人員,機械工程師,高級開發人員和開發人員必須使用以不同方式表示的相同數據的問題。 –

相關問題