老大好!新年好!祝全家都好!
我的方法有三:
一、只用Word的前台功能
思路方法:
利用表格的排序功能,让“字段1”与“数据1”等的前面的字母相同,使排序时,使排到相应的后面。
实施步骤:
1、全选表格,表格、转换、表格转换为文本,文字分隔符选“段落标记”。
2、再把文本转换为表格,列数选1列,再在第一列的前面插入一列,在前十五行输入A-O,复制A-O(当然,也可以通过新建文档,输入=rand(15,1)来产生虚拟文本,按住alt+光标把文字去掉,再给他们加格式、项目符号和编号,自定义一个A、B、C样式的,再复制这十五个),再选中第一列,选择粘贴(如果是通过虚拟文本的,则是选择性粘贴、无格式文本)。
3、再把表格转换为文本,分隔符选默认的制表符。再表格、排序,用拼音、升序(这是默认的,不用改变的。)
4、用Alt+光标选中前面无关的字母加制表符再删除(当然,用替换也行,用查找:[A-O]^t,替换为无,勾选通配符),再表格,表格,文本转换为表格,选11列。再选“样式”为“网格型1”。
二、利用Excel的功能(前台)
思路方法:
与上面的同理,能利用排序功能,但无疑Excel自带的“转置”更好。
实施步骤:
选中表格,复制到Excel中,再复制(Ctrl+C),选中一个空的单元格,在选择编辑、选择性粘贴、转置。再复制表格加Word中,再选样式为“网格型1”。
三、Word中的VBA方法:
Sub 表格转置()
Dim arow%, acol%, 样式 As String
Dim airow%, aicol%
Dim ava() '定义一个数组
Debug.Print Timer
Application.ScreenUpdating = False
With Selection.Tables(1) '处理光格所在表格中
样式 = .Style '取得样式
arow = .Rows.Count '取得行数即11
acol = .Columns.Count '取得列数即15
ReDim ava(arow, acol) '确定数组的范围
For airow = 1 To arow '在行内循环
For aicol = 1 To acol
ava(airow, aicol) = Left(.Cell(airow, aicol).Range.Text, _
Len(.Cell(airow, aicol).Range.Text) - 2)
Next
Next
.Delete '删除
End With
Selection.Tables.Add Selection.Range, acol, arow
With Selection.Tables(1) '处理光格所在表格中
.Style = 样式 '定义样式
For aicol = 1 To acol
For airow = 1 To arow
.Cell(aicol, airow).Range.Text = ava(airow, aicol)
Next
Next
End With
Application.ScreenUpdating = True
Debug.Print Timer
End Sub
**************************************************
KONNGS:你的常规操作做得很有思路.
先前,我也是考虑用排序方式进行,但后来觉得不方便,没想到你的怪招真多啊,我在你基础上,加一个域,你以为如何?
域代码为: { SET B { SEQ A } }{ IF { =MOD({ B },15) } = 0 15 { =MOD({ B },15) } }
以数字方式排序,表格中新增首列后以此域代码作为填充后切断域链接,表格转文本,以数字方式对段落排序,再文字转为表格.
代码处理 是常规思路,更好的方式可以看一下我在一楼的点评,也是你在WORD版中回复时的收获.
[此贴子已经被守柔于2006-2-25 8:06:48编辑过] |