我有一组非常大的数据,它们以x0,y0,z0,x1,y1,z1 ... xn,yn,zn的形式表示笛卡尔坐标。我需要在每个xyz坐标的末尾创建一个新行。我一直在尝试录制一个从每行开头移动一定数量空格的宏,然后创建一个新行。当然,这不起作用,因为每个xyz坐标中的位数不同。
如何在Microsoft Word中创建宏来执行此操作?
答案 0 :(得分:0)
试试这个:
Public Sub test()
Dim s As String
Dim v As Variant
Dim t As String
Dim I As Long
s = "x0,y0,z0,x1,y1,z1,xn,yn,zn"
v = Split(s, ",")
t = ""
For I = LBound(v) To UBound(v)
t = t + v(I)
If I Mod 3 = 2 Then
t = t + vbCr
Else
t = t + ","
End If
Next I
t = Left(t, Len(t) - 1)
Debug.Print t
End Sub
Split
函数沿您指定的分隔符(在您的情况下为逗号)中分割字符串,并将结果返回到基于0的数组中。然后在For
循环中,我们将碎片重新拼接在一起,每个第三个元素使用回车符(vbCR
),否则使用逗号。
最后(可选)步骤是删除尾随回车。
希望有所帮助
答案 1 :(得分:0)
摆在我们面前的问题最为明确 “请生成一个足以完成任务的宏 我有笛卡尔坐标,这一行中有一行 如果你愿意,可以将它们排成多行,三元组!“
本能地,我们开始编码,这个任务的解决方案 经常不问,“这种方式真的最好吗?” 但是另一个方案来自于思想 最受尊敬的二人组:单词替换和查找
提供两个文本框,每个文本框都有一个句号 检查通配符选项并为Amazation做准备!
原谅我!
More
按钮,然后查看Use wildcards
框Find what
输入([!,]{1,},[!,]{1,},[!,]{1,}),
Replace with
输入\1^p
Find Next
,Replace
和Replace All
工作原理
使用通配符时,[!,]{1,}
会找到一个或多个不是逗号的字符。这个成语重复3次,用2个逗号分隔3个实例。这将匹配3个逗号分隔的坐标。然后将整个表达式包装在括号中以创建自动编号的组(在本例中为组#1)。创建组允许我们保存与模式匹配的文本并在Replace
框中使用它。括号外面还有一个逗号,它将一个坐标三元组与下一个坐标分开。
在Replace
框中\1
检索自动编号的组1,这是我们的坐标三元组。接下来是^p
,这是Word中的新段落。
希望有所帮助!