1

我需要转换一个当前看起来像这样的表:

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 自动执行此操作。或者也许是一个宏。不幸的是,我不能将数据透视表用于我所做的事情,否则它会非常简单。

4

1 回答 1

0

这应该可以得到你想要的。此示例中必须同时存在 Sheet1 和 Sheet2。Sheet1 必须包含起始数据。

Sub ConsolidateSpecial()
   ' 首先将工作表复制到工作区
   For iRow = 1 To 65535
      If Worksheets("Sheet1").Cells(iRow, 1) = "" Then Exit
      For iColumn = 1 To 5
         Worksheets("Sheet2") .Cells(iRow, iColumn) = Worksheets("Sheet1").Cells(iRow, iColumn)
      Next
   Next
   
   ' 现在
   为 iRowFirstSet = 1 对 65535的单元格进行合并
      如果 Worksheets("Sheet2").Cells(iRowFirstSet, 1) = "" And Worksheets("Sheet2").Cells(iRowFirstSet, 2) = "" 然后退出 For
      iRowSecondSet = iRowFirstSet + 1 To 65535
         If Worksheets("Sheet2").Cells(iRowSecondSet, 1) = "" And Worksheets("Sheet2").Cells(iRowSecondSet, 2) = "" 然后退出
         If Worksheets("Sheet2").Cells(iRowFirstSet, 1) = Worksheets("Sheet2").Cells(iRowSecondSet, 1) Then
            If Worksheets("Sheet2").Cells(iRowFirstSet, 3) = Worksheets("Sheet2") .Cells(iRowSecondSet, 3) 然后
               Worksheets("Sheet2").Cells(iRowFirstSet, 2) = Worksheets("Sheet2").Cells(iRowFirstSet, 2) + Worksheets("Sheet1").Cells(iRowSecondSet, 2)
               工作表("Sheet2").Cells(iRowFirstSet, 4) = Worksheets("Sheet2").Cells(iRowSecondSet, 4)
               Worksheets("Sheet2").Cells(iRowFirstSet, 5) = Worksheets("Sheet2").Cells(iRowFirstSet , 5) + Worksheets("Sheet1").Cells(iRowSecondSet, 5)
               Worksheets("Sheet2")。Cells(iRowSecondSet, 1).Clear
            End If
         End If
      Next
   Next
   
   ' 现在删除
   iRow = 1 To 65535
      If Worksheets("Sheet2").Cells(iRow, 1) = "" And Worksheets("Sheet2").Cells(iRow, 2) = "" Then Exit For
      If Worksheets("Sheet2").Cells(iRow, 1) = "" Then
         Worksheets("Sheet2").Rows(iRow).Delete iRow
         = iRow - 1
         If iRow < 1 Then iRow = 1
      End If
   Next
   
   MsgBox "done"
结束子

于 2013-11-29T01:48:54.823 回答