2013-05-15 21 views
0

我當前的項目是重寫一個在98中編寫的程序。然後他們的解決方案是在Excel中執行一些操作,在Word中執行下一部分,然後在第三步中回到Excel。該程序同步2個文件,他們的解決方案只需要20個需要同步的文件 - 但是,現在有大約1000個文件需要同步 - 所以我正在精簡這個過程。從文件的輸出範圍x.x中和X.XXXXX之間 - 我格式化他們VBA將逗號附加到整數結束,不要自動更改格式

Columns("A:A").Select 
Selection.NumberFormat = "0.00000" 

爲了使文件更易於閱讀。但第二部分是附加一個逗號,然後是關於數字關係的一封信:對於手頭的問題來說不是必需的。當我嘗試附加逗號時,Excel會嘗試「修復」它並將其錯誤地輸出。例如:

0.42400

0.87200

1.31600

1.75200

變爲:

0.424,

0.872,

1.316,

1.752,

時候就應該留在X.XXXXX。這是我曾嘗試過的:

  • 更改Excel的選項,以便小數標識符爲'。'成千上萬是':'。
  • '範圍( 「A」 &盧旺達問題國際法庭)=格式(範圍( 「A」 &盧旺達問題國際法庭)& 「」)
  • Selection.NumberFormat = 「0.00000」
  • 其他論壇/谷歌/冰

我真的假設這可以在Excel中做的,我只是無法找到比重新打開Word,然後返回到Excel

任何想法,其他的解決方案?

+0

非VBA解決方案將在單獨的列中使用公式'= A1&REPT(「0」,5-LEN(A1))&「,」)'。 – chuff

回答

1

既然你指出的

第二部分是追加一個逗號,然後你會有關的數字信 關係

需要一個公式,而不僅僅是一個格式化選項。在你的VBA代碼,選擇單元格旁邊的原始值,並添加這行代碼:

Selection.FormulaR1C1 = "=TEXT(RC[-1],""#0.00000"") & "",""" 

這可以讓你的格式和逗號(無論數量的長度到小數點左邊點) - 但要添加最後一個字母,您顯然必須修改公式以滿足您的特定需求。

+0

你能解釋一下RC [-1]是做什麼的?我沒有使用R1C1引用,我假設我可以執行'Selection.Formula',對嗎? –

+0

另外,有沒有什麼辦法阻止它在最後一行?它給了我100k +行..:/ –

+0

RC [-1]只是指出使用左側單元格的公式。換句話說,如果你在單元格D3中,RC [-1]是指單元格C3。它不在Excel的網格中使用,但是,當您使用VBA進行編程時,大多數時候您會希望使用像這樣的相關引用。 – ExactaBox

1

您可以插入一列並使用公式。像這樣的東西應該工作

Dim TotalRows As Long 
TotalRows = ActiveSheet.UsedRange.Rows.Count 

Columns("B:B").Insert 

With Range(Cells(1, 2), Cells(TotalRows, 2)) 
    .Formula = "=LEFT(""'""&A1&REPT(""0"",5),7)" 
    .Value = .Value 
End With 

Columns("A:A").Delete 
+0

該解決方案奏效,謝謝。然而,我不確定'.Formula'在做什麼,所以我將不得不考慮這一點。謝謝。 –

+0

它正在添加formula = LEFT(「'」&A1&REPT(「0」,5),7)。 Left將字符串修剪爲7個字符,A1從單元格A1中獲取文本,Rept重複5次字符「0」。用數字前綴數字的原因是爲了將內容視爲字符串。 – Ripster

+0

實際上,在進一步查看文件後,似乎有數十個和數百個。所以它可能是X.XXXXX到XXXX.XXXXX - .XXXXX必須保持:/ –