2014-03-06 33 views
-2

下面填充的數據是一個鏈接樣本原始數據的文件 - >所需的輸出http://www.datafilehost.com/d/3e0c23fbVBA幫助:宏來創建新行和現有行

有用戶特有的「約翰一組列「和」吉姆「,然後是一組四列,每個廣告都有獨特的信息。所以,如果他們看到兩個廣告,則會增加8個列。如果他們看到三個,十二個等。

我想讓一個宏做的是確定每個人有多少個四個集合,創建新的行,並複製這個人的信息(例如3個「John」行),並且只放置一組4個廣告每個列。

樣本數據應該非常清楚。

歡迎使用所有最佳實踐和代碼花絮。

+1

你有試過嗎?如果是的話,請告訴我們您的企圖,請 –

+0

今天這項工作一直在進行中,我一直在試圖一塊一塊地做這件事(增加行數,複製範圍),但我總是被這個網站上的專家完全放肆到設置和前進的最佳實踐,所以我正在尋求一種方法建議,而不是完成一件作品 – user3389569

回答

0

我的第一個建議是給予每個人自己排一個單獨的標籤上有一個唯一的ID和以及所有其他信息:

PersonID Name Age etc. 
1  John 42 foo 
2  Jim 17 bar 

然後,而不是重複對廣告的每一行約翰的信息信息標籤,只需把PersonID。當涉及到更新人員信息時,這會讓你的生活更輕鬆。這也是good practice。其次,我建議你有一個功能dim srcCell as Rangedim targetCell as Range。通過這種方式,您可以瀏覽源數據(使用set srcCell = srcCell.Offset(0, 1)),並可以跟蹤數據應粘貼到的位置。

一旦srcCelltargetCell位於正確的位置,您可以通過targetCell.Value = srcCell.value輕鬆地複製該值。

例如:

Set srcCell = Worksheets("foo").Range("A1") 
Set targetCell = Worksheets("bar").Range("A1") 

Do While srcCell <> "" 
    for i = 1 to 4 
    targetCell.Value = srcCell.Value ' Copy the value across 
    set srcCell = srcCell.Offset(0, 1) ' Move srcCell along one 
    set targetCell = targetCell.Offset(0, 1) ' Move targetCell along one 
    next i 
    ' Move targetCell to the start of the next row. targetCell.Parent is 
    ' the WorkSheet that targetCell is on. 
    set targetCell = targetCell.Parent.Cells(targetCell.Row + 1, 1) 
    set srcCell = srcCell.Offset(0, 1) 
Loop 

' Now here, you'll have to move srcCell back to the start of the next row 
' and do the whole thing again for the next row! 

應該讓你開始那。