2013-10-07 29 views
1

鞏固他們,我需要改變目前看起來像這樣的表:HOWTO看看兩個colums存在於Excel中重複的值,並使用VBA

OI Buy Securities for UPP   100000 0.622 0.624 62381.05 
OI Buy Securities for DIC   30000 1.57 1.575 47239.525 
OI Buy Securities for DIC   26220 1.57 1.574 41278.605 
OI Buy Securities for DIC   10000 1.57 1.574 15743.175 
OI Buy Securities for DIC   30000 1.57 1.574 47229.525 
OI Buy Securities for DIC   3780 1.57 1.574 5950.92 
OI Buy Securities for DIB   50000 3.18 3.189 159447.25 
OI Buy Securities for EMAAR 50000 5.3 5.315 265738.75 
OI Buy Securities for AIRARABIA 100000 1.22 1.223 122345.5 

看起來像這樣:

OI Buy Securities for UPP   100000 0.622 0.624 62381.05 
OI Buy Securities for DIC   100000 1.57 1.574 157441.75 
OI Buy Securities for DIB   50000 3.18 3.189 159447.25 
OI Buy Securities for EMAAR 50000 5.3 5.315 265738.75 
OI Buy Securities for AIRARABIA 100000 1.22 1.223 122345.5 

這張表是我所經歷的日常交易的日誌。我需要將具有相同證券和相同價格的交易合併成一筆交易。這些列包括:安全描述,交易量,股價,佣金後的平均價格,交易總額。以該順序。總交易價值是交易量*佣金後的平均價格。我需要創建第二個表格,除了第一個表格以外,還有excel表格中的第M列。每天我都會從代理商那裏得到一個新文件,看起來像這樣,我需要修改它看起來像第二個表格。你可以請建議我可以使用VBA自動化這個。或者可能是一個宏。我不能使用pivottable來做我不幸的事,否則它會非常簡單。

+0

創建一個新的工作表,每個安全都有一行,並使用'SumIf'公式? –

+1

另外,您可以通過選擇數據>高級來獲得唯一的安全描述。選擇描述範圍,選中「唯一記錄」並複製到其他位置(M列)。這將給你你獨特的記錄,然後你可以使用'SUMIF'就像@DavidZemens建議 – Jaycal

+0

複製你的數據集,添加一列來連接證券和它的股價和小計以總計數量和成本爲每個變化假定數據被排序)。然後過濾添加的列以選擇「總計」,並在第一個小計行中添加該行的「=」列,上面的行)'對於該行的股價和'=「成本列/數量列」'對於佣金後的平均價格,然後複製並刪除過濾器。 – pnuts

回答

0

這應該讓你得到你想要的。本例中必須存在Sheet1和Sheet2。 Sheet1必須包含起始數據。

子ConsolidateSpecial()
     「第一複製表到工作區域
     對於iRow = 1〜65535
           如果工作表( 」工作表Sheet「)。將細胞( iRow,1)=「」然後退出
             對於iColu MN = 1〜5
                 工作表( 「Sheet 2中」)。將細胞(iRow,iColumn)=工作表( 「工作表Sheet」)。將細胞(iRow,iColumn)
           下一頁
     下一頁
     
     '現在Colidate細胞
     對於iRowFirstSet = 1〜65535
           如果工作表( 「Sheet 2中」)。將細胞(iRowFirstSet,1)= 「」 和工作表( 「Sheet2的」) .Cells(iRowFirstSet,2)= 「」 THEN EXIT對於
           對於iRowSecondSet = iRowFirstSet + 1 65535
               如果工作表(「Sheet2」)。Cells(iRowSecondSet,1)=「」和Worksheets(「Sheet2」)。細胞(iRowSecondSet,2)= 「」 THEN EXIT對於
                 如果工作表( 「Sheet 2中」)。細胞(iRowFirstSet,1)=工作表( 「Sheet 2中」)。細胞(iRowSecondSet,1 )然後
                       如果工作表( 「Sheet 2中」)。將細胞(iRowFirstSet,3)=工作表( 「Sheet 2中」)。將細胞(iRowSecondSet,3)然後
                             工作表( 「Sheet 2中」)。將細胞(iRowFirstSet,2)=工作表( 「Sheet 2中」)。將細胞(iRowFirstSet,2)+工作表( 「工作表Sheet」)。細胞(iRowSecondSet,2)
                             W¯¯ orksheets( 「Sheet 2中」)。將細胞(iRowFirstSet,4)=工作表( 「Sheet 2中」)。將細胞(iRowSecondSet,4)
                             工作表( 「Sheet2的」) .Cells(iRowFirstSet,5)=工作表( 「Sheet 2中」)。將細胞(iRowFirstSet,5)+工作表( 「工作表Sheet」)。將細胞(iRowSecondSet,5)
                             工作表(「Sheet2」)。Cells(iRowSecondSet,1)。清除
                       結束如果
                 結束如果
           下一頁
     接着
     
     '立即刪除空行
     對於iRow = 1〜65535
           如果工作表( 「Sheet 2中」)。將細胞(iRow, 1)=「」和Worksheets(「Sheet2」)。Cells(iRow,2)=「」Then Exit For
         如果工作表( 「Sheet 2中」)。將細胞(iRow,1)= 「」 然後
                 工作表( 「Sheet 2中」)。行(iRow).Delete
                  iRow = iRow - 1
                 如果iRow < 1然後iRow = 1
           結束如果
     接着
     
      MSGBOX 「完成」
結束子

相關問題