2015-09-11 218 views
0

我有一组非常大的数据集,它们以x0,y0,z0,x1,y1,z1 ... xn,yn,zn的形式表示笛卡尔坐标。我需要在每个xyz坐标的末尾创建一个新行。我一直在试图记录一个从每行开始移动一定数量空格的宏,然后创建一个新行。当然,这将不起作用,因为每个xyz坐标中的位数不同。用于将逗号分隔列表分隔为列的字宏

如何在Microsoft Word中创建一个宏来执行此操作?

回答

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)每隔三个元素和一个逗号将其拼接在一起。

最后(可选)步骤是删除拖尾回车。

希望帮助

0

的问题放在我们面前是最清楚的问
“请产生足够的任务宏
我有直角坐标,这些
阵列他们在许多行一行,三胞胎,如果你请!真正的”

我们本能地开始代码,这个任务的解决方案
通常不问,‘就是这个样子最好?’
但随后另一种方案源于心灵
大多数崇敬朵:字替换并查找

提供了两个文本框每次encantation
检查通配符选项,并Amazation准备!

原谅我吧!

  1. 在Word中打开查找/替换
  2. 点击More按钮,检查Use wildcards
  3. 对于Find what进入([!,]{1,},[!,]{1,},[!,]{1,}),
  4. Replace with进入\1^p
  5. 使用Find NextReplaceReplace All照常

工作原理
使用通配符[!,]{1,}可找到一个或多个不是逗号的字符。这个习语重复3次,用2个逗号分隔3个实例。这将匹配3个逗号分隔的坐标。然后将整个表达式包裹在圆括号中以创建一个自动编号的组(在这种情况下,组#1)。创建组允许我们保存与该模式相匹配的文本,并在Replace框中使用它。圆括号之外还有一个逗号,它将坐标与下一个坐标分开。

Replace\1检索自动编号的组1,这是我们的坐标三元组。之后是^p这是Word中的一个新段落。

希望有帮助!