2014-02-14 68 views
0

我在尋找有關宏的幫助,以便我可以輕鬆地對數據進行排序和查看。如果單元格中包含值,則將數據複製到新工作表中

我有一個電子表格,第1行和第2行包含項目信息。第3-93行具有訂購信息。對於3-93中的每一行,如果在F和VU之間的任何列中有值,則將該行的A,B,C列中的相應值複製到名爲Orders的新工作表中,並將行中的對應值1列和2列。

例如,我需要這樣的:

......甲..........乙...........Ç..... ..............................F................... ........................ GU

1 .................... .............................. 100235410(海軍襯衫)...... 101028 316(莫斯格子花呢)

2 ............................................... ................... XL .............................. ........... 2XL T

3..Jack .... Brown ... Current .... ......................... 2 ........................ ...................... 1

複製到一個稱爲訂單新的薄片,例如:

.......甲.........乙.............ç......................... .............. d ................................è.. ................ F

1 ...傑克...布朗......當前.............. 100235410 (海軍襯衫)................. XL ................. 2

2 ...傑克。 ..Brown ....當前............ 101028 316(青苔FR格子)......... 2XL T ............ ..1

我很努力的VBA邏輯,似乎無法得到它的正確工作。任何幫助或建議,不勝感激。

謝謝!

+0

發佈您擁有的代碼總是有幫助的。 –

+0

@RichardMorgan我正在努力規劃它。我對VBA很陌生,只在很少的情況下工作。希望瞭解這應該如何流動和學習。 –

回答

0

像這樣的問題可能是一個挑戰,如果你只是潛入編碼,特別是初學者,它需要定義一些可以編碼爲分立過程的一口大小的塊。我建議您創建一個流程圖或分步過程,描述如果您必須手動進行更改,您將執行的操作。如果您的過程準確地描述了這些步驟,則可以創建代碼,執行每個單獨的步驟,並按照您在流程圖中描述的順序將這些代碼剪輯串起來。

此外,一定要定義可以重複使用的每一行或工作表或您將使用的其他分立數據集的過程。然後,您可以循環這些進程以避免一遍又一遍地寫入相同的代碼。

對於上述示例,如果我理解正確,您首先需要定義客戶定義的範圍:在此情況下,範圍從A3到A93(或者最高行數可能是什麼)。如果情況有所不同,您需要定義一個範圍隨特定數據集而變化(使用.End方法,例如,如果數據中沒有空單元(理想情況下不應該),則可以這樣做:

Dim wbOrders As Workbook 
    Set wbOrders = ActiveWorkbook 
Dim wsOrders As Worksheet 
    Set wsOrders = wbOrders.ActiveSheet 
Dim rngOrders As Range 
    Set rngOrders = wsOrders.Range("A3", wsOrders.Range("A3").End(xlDown)) 

一旦你定義在哪些訂單被發現的範圍內,可以遍歷數據與個別訂單工作:

Dim rngCustomer As Range 

For Each rngCustomer In rngOrders 
    '~~>Here you could define other ranges to work with (perhaps columns F to VU of the 
    ' current row) 
    '~~>Here you could also define other loops/routines to move the data 
Next rngCustomer 

內上述循環結構,你能Dim一系列客戶訂單,遍歷包含數據的範圍查找列,使用找到的數據(每次一個)獲取每列從該行和第1行到第2行的數據(一次可能是一個單元格),將其轉移到新的 工作表,或者將其轉換爲可在第一個循環找到並定義之後添加到所有新工作表的值的數組中所有客戶訂單數據並將其放入數組中。

我希望這足以讓你開始處理這個問題。如果您在單個步驟的編碼過程中碰到障礙,請在StackOverflow或Web上搜索以找到解決方案。如果您沒有找到它們,請發佈一個問題,詳細說明您嘗試過的內容,並將特定的非工作代碼包含在StackOverflow中,我幾乎可以確保您在24小時或更短時間內得到答案。

+0

感謝您的詳細回覆。我或多或少地尋找一種解決方案,或者甚至是一種可行的基礎解決方案,然後我可以研究它來理解邏輯/流程。然後,如果我瞭解它後做了調整。謝謝Karl! –

+0

不客氣。除非您已經爲其編寫了一些工作,否則StackOverflow通常不會爲您編寫基本代碼。但是,如果你在發佈之前明確地嘗試了這個問題,提供足夠的細節並且分享你所嘗試的細節,那麼人們就會非常有幫助。看看[這個位置](http://stackoverflow.com/questions/how-to-ask),[this other location:especially item 3](http://stackoverflow.com/help/on-topic),以及[這個問題清單](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)提出問題的指導方針。 –

相關問題