2015-09-11 257 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中的一個新段落。

希望有幫助!