Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2688|回复: 10

[已解决]如何用VBA批量合并没有边框的单元格

[复制链接]
发表于 2011-12-29 09:58 | 显示全部楼层 |阅读模式
附件中的表格,我想将没有边框的单元格都合并。并保留内容(有的是第一行,有的是中间的行,有的是最下方的行),请问用VBA如何实现?谢谢!
最佳答案
2011-12-29 10:25
这个表做的太蛋疼了

Sub test()
    Application.DisplayAlerts = False
    For c = 1 To 5
        For r = 21 To 3 Step -1
            If Cells(r, c).Borders(xlEdgeTop).LineStyle = xlNone Then
                Cells(r - 1, c) = Cells(r - 1, c) & Cells(r, c)
                Range(Cells(r - 1, c), Cells(r, c)).Merge
            End If
        Next
    Next
    For r = 21 To 3 Step -1
        If Cells(r, 6).Borders(xlEdgeTop).LineStyle = xlNone Then Rows(r).Delete
    Next
    Application.DisplayAlerts = True
End Sub

依法治省迎检通知7.rar

2.55 KB, 下载次数: 19

发表于 2011-12-29 10:25 | 显示全部楼层    本楼为最佳答案   
这个表做的太蛋疼了

Sub test()
    Application.DisplayAlerts = False
    For c = 1 To 5
        For r = 21 To 3 Step -1
            If Cells(r, c).Borders(xlEdgeTop).LineStyle = xlNone Then
                Cells(r - 1, c) = Cells(r - 1, c) & Cells(r, c)
                Range(Cells(r - 1, c), Cells(r, c)).Merge
            End If
        Next
    Next
    For r = 21 To 3 Step -1
        If Cells(r, 6).Borders(xlEdgeTop).LineStyle = xlNone Then Rows(r).Delete
    Next
    Application.DisplayAlerts = True
End Sub

回复

使用道具 举报

 楼主| 发表于 2011-12-29 10:34 | 显示全部楼层
Zipall 老师:你好
首先要感谢你的帮助!
其次是要向老师说明,我这个表格是从一个PDF格式的表格转换过来的,所以不规则;
三是要再向老师请教,如何让合并之后的单元格里面的内容,删除空格,再居中?
回复

使用道具 举报

发表于 2011-12-29 10:38 | 显示全部楼层
恩,表格做的确实有点怪异...
回复

使用道具 举报

发表于 2011-12-29 10:59 | 显示全部楼层
ww0000 发表于 2011-12-29 10:34
Zipall 老师:你好
首先要感谢你的帮助!
其次是要向老师说明,我这个表格是从一个PDF格式的表格转换过来 ...

原来如此

CTRL+H 查找内容里输入1个空格后单击全部替换

如果要代码的话,自己录个宏看看吧.
回复

使用道具 举报

 楼主| 发表于 2011-12-29 11:11 | 显示全部楼层
空格是可以替换,但还是在不同的行。
我想合并到同一行。
也就是要去除换行
录了一个宏,运行错误
回复

使用道具 举报

 楼主| 发表于 2011-12-29 11:28 | 显示全部楼层
Zipall 老师,问题已解决,只是最下方的边框少了一条,代码哪个地方出了问题?
回复

使用道具 举报

 楼主| 发表于 2011-12-29 11:29 | 显示全部楼层
再一个,如果换另外的表,代码哪个地方要怎样改?谢谢!!
回复

使用道具 举报

发表于 2011-12-29 16:29 | 显示全部楼层
ww0000 发表于 2011-12-29 11:29
再一个,如果换另外的表,代码哪个地方要怎样改?谢谢!!

1 to 5 是1到5列 删除时参考第6列
21 to 3 是21行到第3行
其它可能不需要改动了.
回复

使用道具 举报

发表于 2011-12-30 10:33 | 显示全部楼层
ww0000 发表于 2011-12-29 11:28
Zipall 老师,问题已解决,只是最下方的边框少了一条,代码哪个地方出了问题?

在end sub之前添加

    r = Range("d65536").End(xlUp).Row
    Cells(r, 1).Resize(1, 7).Borders.LineStyle = xlContinuous


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-17 22:22 , Processed in 0.323508 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表