2016-12-28 155 views
-2

我正在嘗試創建代碼,以幫助我實現正確的格式。我想要的只是將員工(EE)整行並粘貼到新工作表中,然後將第二部分(ER)值與同一員工匹配。換句話說,如果員工代表同一僱員支付了100(Pen EE(Tal))和僱主200(Pen ERS(Tal))的養老金供款。然後,工作表應該看起來像列A =人員否,列B =員工姓名,列C = ID號碼,列D = PenPay,列E =筆EE(Tal)和列F =筆ER(Tal)和G =總計(筆EE +筆ER值),正如示例選項卡中所示。操作標準數據庫

我希望這是有道理的。到目前爲止,我嘗試了幾種方法,但沒有運氣。感謝大家的幫助。

+0

您是否看過通過ADODB在VBA中對Excel的SQL支持?這可能是最乾淨的解決方案。 –

+0

嗨,不,我沒有。你能否發佈鏈接,以便我可以看看它。我在VBA編碼處理方面相當新穎。 – Mouctar

回答

1

從你的問題描述,我想我可以破譯你正在使用Excel。

我看到解決您的問題三種基本方法:

最簡單的方法是不使用VBA的所有功能,轉而使用工作簿功能INDEXMATCH。後者返回在搜索範圍內找到精確匹配的行或列,這必須是一維的。 (完全匹配實際上需要搜索選項0.)函數INDEX返回範圍中給定行和列處的值。將兩者結合起來,您可以更靈活地查看VLOOKUPHLOOKUP,,您可以使用它查找給定員工的第二個表中的值。 (MATCH如果沒有發現匹配返回一個錯誤N/A

第二種方法是使用Excel對象模型在VBA。您可以使用範圍的Find方法在範圍中搜索值。這將返回找到匹配的單元格,如果不匹配,則返回Nothing。如果搜索結果不是Nothing,則可以使用EntireRow屬性獲取整行,並使用Cells屬性選擇行中的單元格。

最後,您可以通過ADODB使用SQL for Excel的支持。有關如何執行此操作的說明,您可以在SO上查看此Microsoft page和這個舊的question。如果您知道如何編寫SQL查詢,這應該使您能夠通過SQL解決您的問題。

+0

@Mouctar我同意。給出足夠的數據,使用INDEX和MATCH可能會很慢。在這種情況下,你可能想看看第三種方法。 SQL支持使用更高效的連接算法來匹配您的數據。 –

+0

你好,謝謝你的建議。但是,我目前使用索引和匹配來獲得正確的格式,並且需要我永遠做到這一點,因爲我有70多個退休金計劃和約7000名員工,所以這個選項適用於小報告,但不是大報告。第二個建議可能是更好的選擇,但我很努力甚至想從哪裏開始,因爲我對VBA編碼頗爲新穎。最後的建議可能也不錯,但這是我第一次聽說它,所以這會讓我永遠明白,不要介意編寫可以完成這項工作的代碼。 – Mouctar

+0

任何想法,我可以找到關於SQL的學習材料,我只是想讓我的工作更好,因爲它可以是有壓力的,因爲截止日期很短。請任何幫助將不勝感激 – Mouctar