2012-11-14 223 views
1

我有一個文件,列中充滿了數字,第二列中包含每個數字的相應貨幣。我有USD, EUR, CHF, and GBPExcel宏將單元格格式更改爲貨幣

我想創建一個宏,它將數字格式從數字格式化爲貨幣格式,然後應用第二列中的貨幣。

這個技巧是,我希望數字列中仍然有數字,因爲可以添加或減少數字。因此,我不希望兩列的簡單連接,因爲這會使字段成爲文本,並且無法在數學方程中使用。

請幫助,如果你知道如何。

謝謝!

+1

難道你不能將列的單元格格式化爲「貨幣」並設置貨幣類型嗎? – Marc

+0

我可以,但問題是我有很多行,並且經過每一行並選擇正確的貨幣(因爲有4種貨幣可供選擇)需要一些時間。這就是爲什麼我想編寫一個宏來爲我做...如果我可以 – Irina

+1

您是否嘗試過在設置一個自定義格式時錄製宏?你應該可以使用它來開始。 –

回答

3

我不知道我理解你的確切的問題,但這需要所有的值在列A,並將其格式化爲基於列B中貨幣的價值在C列貨幣:

Sub Macro1() 

Dim cl As Range 

For Each cl In Intersect(ActiveSheet.Range("A:A"), ActiveSheet.UsedRange) 
    cl.Offset(0, 2).Value = cl.Value 
    Select Case cl.Offset(0, 1).Value 
     Case "USD" 
     cl.Offset(0, 2).NumberFormat = "$#,##0.00" 
     Case "EUR" 
     cl.Offset(0, 2).NumberFormat = "[$€-2] #,##0.00" 
     Case "GBP" 
     cl.Offset(0, 2).NumberFormat = "[$£-809]#,##0.00" 
     Case "CHF" 
     cl.Offset(0, 2).NumberFormat = "[$CHF] #,##0.00" 
    End Select 

Next cl 

End Sub 

如果您想要更改貨幣類型,記錄一個宏,將宏單元設置爲正確的貨幣,然後根據需要複製並粘貼該數字格式。

+0

約翰......天才。我正在推翻它。謝謝!!! – Irina

+0

它一直使用歐元和歐洲的數字格式對我來說(我是荷蘭語)雖然我的代碼絕對命中'cl.Offset(0,2).NumberFormat =「$#,## 0.00」' – RoXaS

+1

問題似乎是這個可以根據您的系統區域設置而有所不同。對於那些以歐元計價的肉來說,把它變成美元就必須把它變成'cl.NumberFormat =「[$$ - 409]#,## 0.00」'除此之外,我有一個問題,我似乎不能改變'$ 12.000,00'(這是荷蘭的逗號和小數點)到'$ 12,000.00'有人可以幫我弄清楚。 – RoXaS