我需要转换一个当前看起来像这样的表:
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
此表是我所发生的每日事务的日志。我需要合并的交易是相同的安全和相同的价格到一个单一的交易。这些列是:证券说明、成交量、股票价格、佣金后的平均价格、总交易额。按这个顺序。总成交额是成交量*扣除佣金后的平均价格。我需要创建这个第二个表除了第一个,所以列M向前的excel工作表。每天我从代理收到一个新文件,看起来像这样,我需要修改它,使其看起来像第二个表。你能建议一些我可以用VBA实现自动化的方法吗?或者可能是宏。不幸的是,我不能对我所做的事情使用透视表,否则它将会非常简单。
发布于 2013-11-29 01:48:55
这应该会让你得到你想要的。在此示例中,必须同时存在Sheet1和Sheet2。Sheet1必须包含起始数据。
子ConsolidateSpecial()
用户的第一份工作表复制到工作区
iRow的成本=1%到65535
检查工作表(“Sheet1”).Cells(iRow,1) = "“则退出
iColumn =1到5所需的时间。
*工作表(“Sheet2”).Cells(iRow,iColumn) =工作表(“Sheet1”).Cells(iRow,iColumn)
*
**下一步
“现在”合并单元格
iRowFirstSet的成本=1%到65535
检查工作表(“Sheet2”).Cells(iRowFirstSet,1) = "“和工作表(”Sheet2“).Cells(iRowFirstSet,2) = "”,然后退出
iRowSecondSet = iRowFirstSet +1%到65535 %所需的成本
如果工作表(“Sheet2”).Cells(iRowSecondSet,1) = "“,工作表(”Sheet2“).Cells(iRowSecondSet,2) = "”,则退出。
如果工作表(“Sheet2”).Cells(iRowFirstSet,1) =工作表(“Sheet2”).Cells(iRowSecondSet,1),则iRowSecondSet(1)。
如果工作表(“Sheet2”).Cells(iRowFirstSet,3) =工作表(“Sheet2”).Cells(iRowSecondSet,3),那么iRowSecondSet(3)就是工作表。
.Cells(iRowFirstSet,2) = Worksheets("Sheet2").Cells(iRowFirstSet,2) +Worksheet(“Sheet1”).Cells(iRowSecondSet,2)
*.Cells(“Sheet2”).Cells(iRowFirstSet,4) =Worksheet(“Sheet2”).Cells(iRowSecondSet,4)
.Cells(iRowFirstSet,5) = Worksheets("Sheet2").Cells(iRowFirstSet,5) +Worksheet(“Sheet1”).Cells(iRowSecondSet,5)
*(“Sheet2”).Cells(iRowSecondSet,1).Clear
*
*
*
**下一步
“现在删除空行
iRow的成本=1%到65535
检查工作表(“Sheet2”).Cells(iRow,1) = "“和工作表(”Sheet2“).Cells(iRow,2) = "”,然后退出
例如,如果工作表(“Sheet2”).Cells(iRow,1) = "“Then
Sheet2).Rows(IRow).Delete提供了两个版本的工作表(“iRow”)
* iRow =iRow-1
*如果iRow <1,则iRow =1
*结束时
**下一步
**MsgBox“完成”
结束子对象
https://stackoverflow.com/questions/19221747
复制