我的答案,请批评指点:
一、查找与替换法:
1、选中表格,表格/转换/表格转换为文本,文字分隔符“制表符”;
2、查找:“^t{9}^13”,替换为啊蔽蓿?囱⊥ㄅ浞???浚徊檎遥骸?[^t^13])([^t^13])”“\10\2” 勾选通配符,全部,执行2次。把再后的几个0^13删除。
3、全选,表格/转换/文本转换为表格,选10列,制表符
4、在第一列的前面加一列,在第一行至第5行,分别输入“二、二、二、三”。复制“二、二、二、三”,再选中第一列,粘贴。选中表格,表格/转换/表格转换为文本,文字分隔符“制表符”
5、查找“三*(^13)”“”(无)格式字体\加粗,勾选通配符,全部
6、按住alt框选“二 ”即“二制表符”、“三制表符”,按Delete
7、全选,表格/转换/文本转换为表格,选10列,制表符。
8、定义表格的列宽分别为2,1.5,2.5,2.5,1.5,1,1.5,2,1.5,4厘米,首行重复标题行
二、简化的查找与替换法:
1、选中表格,表格/转换/表格转换为文本,文字分隔符“制表符”;
2、查找:“^t{9}^13”,替换为“”无,勾选通配符,全部;查找:“([^t^13])([^t^13])”“\10\2” 勾选通配符,全部,执行2次。把再后的几个0^13删除。
3、全选,字体设为红,查找:“^13*^13*^13(*^13)”,勾选通配符,勾选“突出显示所有在该范围内的项目”,查找全部,关闭,把选中的部分字体设为黑色;再手工把第一行设为黑色。
4、全选,表格/转换/文本转换为表格,选10列,制表符。
5、定义表格的列宽分别为2,1.5,2.5,2.5,1.5,1,1.5,2,1.5,4厘米,首行重复标题行.
三、变化的查找与替换法:
1、选中表格,表格/转换/表格转换为文本,文字分隔符“制表符”;
2、查找:“^t{9}^13”,替换为“”无,勾选通配符,全部;查找:“([^t^13])([^t^13])”“\10\2” 勾选通配符,全部,执行2次。把再后的几个0^13删除。
3、全选,表格/转换/文本转换为表格,选分隔符为段落标记,4列。把第4列的字体设为红色;再全选表格/转换/表格转换为文本,选文字分隔符为“段落标记”。
4、全选,表格/转换/文本转换为表格,文字分隔符为“制表符”,选10列。
5、定义表格的列宽分别为2,1.5,2.5,2.5,1.5,1,1.5,2,1.5,4厘米,首行重复标题行。
四、再变化的查找与替换法:
1、全选表格,格式/项目符号和编号/项目符号/自定义/字符,选择"0",即可,查找“^?”(当然[0-9,A-J]也行),在格式/项目符号和编号/项目符号,选“无”这样,就出现了形如的样子。
2、复制表格,新建(CTRl+N),编辑/选择性粘贴/无格式文本。查找“^t(^13)”,替换为“\1”,勾选通配符,全部;查找“^13[0^t^t]{1,}(^13)”,替换为“\1”,勾选通配符,全部;查找“^t^t”, 替换为“^t”,勾选通配符,全部.
3、全选,字体设为红,查找:“^13*^13*^13(*^13)”,勾选通配符,勾选“突出显示所有在该范围内的项目”,查找全部,关闭,把选中的部分字体设为黑色;再手工把第一行设为黑色。
4、全选,表格/转换/文本转换为表格,选10列,制表符。
5、定义表格的列宽分别为2,1.5,2.5,2.5,1.5,1,1.5,2,1.5,4厘米,首行重复标题行.
VBA方法:
Sub konggs()
Dim atable As Table, arow As Row, acell As Cell, a%
Dim arr(), n%
On Error Resume Next '忽略错误
Application.ScreenUpdating = False '关闭屏幕更新
Debug.Print Timer
For Each atable In ActiveDocument.Tables
With atable
a = atable.Columns.Count ' 表格的列数
For Each arow In .Rows
If Len(.Range) = a * 2 + 2 Then '全部为空则删除
arow.Delete
End If
If (arow.Index) Mod 4 = 0 Then '满足条件即第4行即字体加粗
arow.Range.Font.Bold = True
End If
Next
For Each acell In .Range.Cells '全部为空则为0
If Len(acell.Range) = 2 Then
acell.Range = "0"
End If
Next
'以下为定义宽度部分,不过老大的本来就是这几个值?为何?
' arr = Array("2", "1.5", "2.5", "2.5", "1.5", "1", "1.5", "2", "1.5", "4") '定义数组
' For n = 0 To UBound(arr) '在数组中循环
' atable.Columns(n + 1).PreferredWidth = CentimetersToPoints(arr(n))
' Next
End With
Next
Application.ScreenUpdating = True '开启屏幕更新
Debug.Print Timer
End Sub
***************************************
KONGGS:
你的方法很好很全面,但有些地方表述得不够精确。建议能不用通配符时,不要使用通配符,比如"^t^t"替换为"^t";"^t(^13)"(或^t^p),替换为"^p",完全可以在非通配符状态下查找与替换.
另外::"^13*^13*^13(*^13)",你只需要查找,并不要求返回值时,不需要使用括号.并且整个过程你可以复核一下,查找::从头查找全部"^13*^13*^13(*^13)",应该是不选中第一、第五等等的段落文本(但选定段落标记),所以应该在查找全部之前全选文档,把文字加粗,查找符合的实例后,设置为非加粗。(也可以在替换中设置)
项目符号的方法很好。
注意表格列宽可以直接在制表位情况下复制覆盖原表格,所以我把列宽给描述出来,就是考虑希望大家不要总是把眼光放在文字转换为表格再调整列宽的方法上.
If Len(.Range) = a * 2 + 2 Then '全部为空则删除写得很规范。
注意要求是加粗而非红色.
[此贴子已经被守柔于2005-12-23 5:46:12编辑过] |