以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [原创]execl表格某一列的所有行重复值合并自定义函数  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=67389)

--  作者:baicaocao
--  发布时间:2015/4/23 13:03:00
--  [原创]execl表格某一列的所有行重复值合并自定义函数
\'引用方式:Functions.Execute("表格行合并",sheet1,1)
\'第一个sheet1代表工作表.
\'第二个1代表要合并那一列.
\'默认从第一行开始合并.
Dim sheet1 As object = args(0) \'这里开始加载数据.
Dim l As Integer = args(1) \'要合并的列的位置.
Dim v As Integer = 1 \'计数器
Dim h As Integer = 1 \'合并起始行
Dim vl As String
vl = sheet1(0,l).value \'定位第一个值
For i As Integer = 1 To sheet1.Rows.Count -1
    If sheet1(i,l).value = vl Then \'如果第一个值和下个值相同
        v + = 1 \'如果相同则继续循环并且将v的值加1
    Else \'如果不相同了.则进行合并
            sheet1.MergeCell(i-v,l,v,1) \'合并行数 \'合并起始行为当前行i-v
            vl = sheet1(i,l).Value \'并且将vl重新赋值.
            v = 1 \'重新对v清零
    End If
Next
\'bk.save()

--  作者:Bin
--  发布时间:2015/4/23 13:56:00
--  
谢谢分享图片点击可在新窗口打开查看
--  作者:湛江智
--  发布时间:2017/8/5 23:24:00
--  
 楼主,这个代码写在哪里才能用的?
试了在窗口的按钮里没反应

--  作者:有点甜
--  发布时间:2017/8/6 11:34:00
--  
以下是引用湛江智在2017/8/5 23:24:00的发言:
 楼主,这个代码写在哪里才能用的?
试了在窗口的按钮里没反应

 

贴出你的测试代码。

 

Dim book As new XLS.Book("d:\\test.xls")
Dim sheet1 As object = book.Sheets(0)
Dim l As Integer = 0\'要合并的列的位置.
Dim v As Integer = 1 \'计数器
Dim h As Integer = 1 \'合并起始行
Dim vl As String
vl = sheet1(0,l).value \'定位第一个值
For i As Integer = 1 To sheet1.Rows.Count -1
    If sheet1(i,l).value = vl Then \'如果第一个值和下个值相同
        v + = 1 \'如果相同则继续循环并且将v的值加1
    Else \'如果不相同了.则进行合并
            sheet1.MergeCell(i-v,l,v,1) \'合并行数 \'合并起始行为当前行i-v
            vl = sheet1(i,l).Value \'并且将vl重新赋值.
            v = 1 \'重新对v清零
    End If
Next
book.save("d:\\test.xls")