2012-07-30 13 views
0

我有這種代碼可將多個工作簿聚合到預覽文件中,其中所有數據都清晰地顯示在表格和圖表中。然後將這些表格和圖表粘貼到PowerPoint演示文稿中。格式化單元格中的值,並將格式化後的值發送到Powerpoint

當表格中的值被複制到PowerPoint幻燈片時,我遇到了問題,無法正確格式化。其中一個源工作表輸出值爲847389.240398230423,並且當您嘗試將其放在PowerPoint中時,會得到一個值太多的行,並且看起來像2.240398230423E-02。這種格式在任何會議中都不太好看。

我寫了一些代碼,而值在預覽工作簿

Sheets("Output").Select 

'Select1 
Range("C10:H15").Select 
    Selection.NumberFormat = "0.000" 

'Select2 
Range("C17:H17").Select 
    Selection.NumberFormat = "0.000" 

'Select3 
Range("C18:H19").Select 
    Selection.NumberFormat = "0.00" 

'Select4 
Range("C20:H21").Select 
    Selection.NumberFormat = "0.00" 

該代碼完全適用,我需要和顯示像0.487的數據,將編輯的代碼,但在實際值單元格就像0.487682742490這樣的東西,我認爲這就是代碼在更新PowerPoint演示文稿時正在識別的內容。

有沒有一種方法可以編寫一些代碼,它們只會在小數點後面的前兩位或三位數字中忽略其他非重要數字?

+0

是的,你能告訴你如何出口到PP? – 2012-07-31 00:01:29

回答

1

有幾種方法可以實現這一點。一種方法是強制格式化/可見數據作爲實際值。

例如,假設單元格A1包含值1.234。使用此代碼:

ActiveSheet.Range("A1").NumberFormat = "0.0" 
ActiveSheet.Range("A2").Value = ActiveSheet.Range("A1").Value 
ActiveSheet.Range("A3").Value = ActiveSheet.Range("A1").Text 

其結果是,像這樣:

  • 細胞A1包含值1.234,但顯示爲1.2
  • 細胞A2包含值1.234,並顯示爲1.234
  • 單元格A3包含值1.2,並顯示爲1.2

細胞的.Text屬性其實是你在單元格中看到。一旦你以這種方式轉換你的價值觀,轉移到PP應該按預期工作。


或者(雖然不是首選,因爲它是較爲繁瑣的使用和需要的字符串,而不是僅僅堅持值),可以使用這樣的事情:

Dim s As String 
Dim dec As Integer 

dec = 2 
s = CStr(ActiveSheet.Range("A1").Value) 
ActiveSheet.Range("A3").Value = CDbl(Left(s, InStr(s, ".")) & Left(Right(s, Len(s) - InStr(s, ".")), dec)) 

在上面,你可以通過增加dec的值來擴展小數位數。但是,不作進一步修改1.000將作爲1(刪除可能重要的0)。

如果您使用此方法,則可以保留一個數值(使用CDbl()),或者如果不需要執行任何算術(即將其放入PP),則可以將其保留爲字符串。

+0

That works,thank you – 2012-08-03 19:28:12

+0

很高興能幫到您,@JayNerger如果這個答案對您有幫助,那麼請考慮將其標記爲已接受的答案,以便其他人更容易在將來找到答案! – Gaffi 2012-08-03 19:29:34