ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1213|回复: 9

[求助] 批量:表格行中多列被合并,现在要折分

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-12-2 14:42 | 显示全部楼层 |阅读模式
刚开始时如图第一个表,“市”和“省内”所在的行被合并了
需要做成如图第二个表,“市”和“省内”所在的行折分多列,等同于上下行

未标题-1.jpg

测试.rar (4.42 KB, 下载次数: 5)

我的思路是:查找字体—剪切—光标向下移动一行—插入行(在上方)—光标向左移动—粘贴—光标向上移动1格—删除表格行
希望老师们做成宏进行批量操作,先谢谢了


TA的精华主题

TA的得分主题

发表于 2017-12-2 15:32 | 显示全部楼层
手工整一下吧,这种需求也不经常做....

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-12-2 15:50 | 显示全部楼层
jiminyanyan 发表于 2017-12-2 15:32
手工整一下吧,这种需求也不经常做....

是不经常有,但内容很多,有近3千页,工作量太大了

TA的精华主题

TA的得分主题

发表于 2017-12-2 16:36 | 显示全部楼层
本帖最后由 duquancai 于 2017-12-2 17:02 编辑

Sub shishi()
    Dim c&, tb As Table
    If ActiveDocument.Tables.Count < 1 Then Exit Sub
    For Each tb In ActiveDocument.Tables
        If tb.Rows.Count >= 2 Then
            For i = 2 To tb.Rows.Count
                If tb.Rows(i).Range.Cells.Count = 1 Then
                    c = tb.Rows(i).Range.Previous(wdRow).Cells.Count
                    tb.Rows(i).Range.Cells.Split 1, c, True
                End If
            Next
        End If
    Next
End Sub

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-12-2 22:52 | 显示全部楼层
duquancai 发表于 2017-12-2 16:36
Sub shishi()
    Dim c&, tb As Table
    If ActiveDocument.Tables.Count < 1 Then Exit Sub

服杜老师,谢谢杜老师

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-12-2 22:55 | 显示全部楼层
duquancai 发表于 2017-12-2 16:36
Sub shishi()
    Dim c&, tb As Table
    If ActiveDocument.Tables.Count < 1 Then Exit Sub


如何在最后一列再加一列?


TA的精华主题

TA的得分主题

发表于 2017-12-3 00:02 | 显示全部楼层
菜菜行者 发表于 2017-12-2 22:55
如何在最后一列再加一列?

Sub shishi()
    Dim c&, tb As Table
    If ActiveDocument.Tables.Count < 1 Then Exit Sub
    Application.ScreenUpdating = False
    For Each tb In ActiveDocument.Tables
        If tb.Rows.Count >= 2 Then
            For i = 2 To tb.Rows.Count
                If tb.Rows(i).Range.Cells.Count = 1 Then
                    n = n + 1
                    c = tb.Rows(i).Range.Previous(wdRow).Cells.Count
                    tb.Rows(i).Range.Cells.Split 1, c, True
                End If
            Next
        End If
        If n > 0 Then
            tb.Columns(c).Select: n = 0
            Selection.InsertColumnsRight
            tb.AutoFitBehavior (2)
        End If
    Next
    Application.ScreenUpdating = True
    MsgBox "ok!"
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-12-3 14:17 | 显示全部楼层
duquancai 发表于 2017-12-3 00:02
Sub shishi()
    Dim c&, tb As Table
    If ActiveDocument.Tables.Count < 1 Then Exit Sub

是我想要的,谢谢杜老师

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-12-4 21:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
duquancai 发表于 2017-12-3 00:02
Sub shishi()
    Dim c&, tb As Table
    If ActiveDocument.Tables.Count < 1 Then Exit Sub

我忽略了一种情况,上传的附件每列的宽度是一样的,使用上面的代码运行是没问题的
但是,如何列宽不一样时,是出错的,且只处理了第一个表格。

杜老师,麻烦再帮我改改,谢谢了

TA的精华主题

TA的得分主题

发表于 2017-12-4 22:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
菜菜行者 发表于 2017-12-4 21:48
我忽略了一种情况,上传的附件每列的宽度是一样的,使用上面的代码运行是没问题的
但是,如何列宽不一样 ...

自己修改。。。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-12 09:57 , Processed in 0.028770 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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