如何看看在excel中的两个colums中是否存在重复的值,并使用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 

这张表是我所经历的日常交易的日志。 我需要将同一种证券和同一价格的交易合并成一笔交易。 这些列是:安全描述,数量,股价,佣金后平均价格,交易总额。 以该顺序。 总交易价值是交易量*佣金后的平均价格。 我需要创build第二个表格,除了第一个表格以外,还有excel表单中的第M列。 每天我从代理看到这样一个新的文件,我需要修改它看起来像第二个表。 你可以请build议我可以使用VBA自动化。 或者可能是一个macros。 我不能使用pivottable来做我不幸的事情,否则会很简单。

这应该得到你想要的。 在这个例子中,Sheet1和Sheet2都必须存在。 Sheet1必须包含起始数据。

Sub ConsolidateSpecial()
第一张复印纸到工作区
对于iRow = 1到65535
如果工作表(“Sheet1”)。Cells(iRow,1)=“”则退出
对于iColumn = 1到5
单元格(iRow,iColumn)=工作表单元(“Sheet1”)单元格(iRow,iColumn)
下一个
下一个

“现在,Colidate细胞
对于iRowFirstSet = 1到65535
如果Worksheets(“Sheet2”)。Cells(iRowFirstSet,1)=“”And Worksheets(“Sheet2”)。Cells(iRowFirstSet,2)=“”Then Exit For
对于iRowSecondSet = iRowFirstSet + 1至65535
如果Worksheets(“Sheet2”)。Cells(iRowSecondSet,1)=“”和Worksheets(“Sheet2”)。Cells(iRowSecondSet,2)=“”Then Exit For
如果Worksheets(“Sheet2”)。Cells(iRowFirstSet,1)= Worksheets(“Sheet2”)。Cells(iRowSecondSet,1)Then
如果Worksheets(“Sheet2”)。Cells(iRowFirstSet,3)= Worksheets(“Sheet2”)。Cells(iRowSecondSet,3)Then
(iRowFirstSet,2)=工作表(“Sheet2”)。单元格(iRowFirstSet,2)+工作表(“Sheet1”)。单元格(iRowSecondSet,2)
单元(iRowFirstSet,4)=工作表(“Sheet2”)。单元(iRowSecondSet,4)
(iRowFirstSet,5)=工作表(“Sheet2”)。单元格(iRowFirstSet,5)+工作表(“Sheet1”)。单元格(iRowSecondSet,5)
工作表(“Sheet2”)。Cells(iRowSecondSet,1).Clear
万一
万一
下一个
下一个

'现在删除空白行
对于iRow = 1到65535
如果工作表(“Sheet2”)。Cells(iRow,1)=“”和Worksheets(“Sheet2”)。Cells(iRow,2)=“”Then Exit For
如果工作表(“Sheet2”)。Cells(iRow,1)=“”那么
工作表( “Sheet2的”)。行(iRow).Delete
iRow = iRow – 1
如果iRow <1则iRow = 1
万一
下一个

MsgBox“完成”
结束小组