2013-11-14 75 views
0

當錄製宏時,我想將單元格的當前值更改爲取決於原始值的新值。不要將其設置爲「記錄」值。excel宏:根據原始單元格值更改單元格值

示例:單元格中的值需要從.1234(文本)更改爲0,1234(數字)。而 0.56789至0,56789

我的工作方法是:

record macro 
"F2" : to change value, 
"home" : go to beginning, 
"del", 
"del", 
"0", 
",", 
"return", 
stop record macro 

但是當我使用在其他領域的宏觀,中值更改爲0,1234,即使原始值是0.5678爲例。

回答

1

這可以在VBA中完成,但最簡單的解決方案(如果所有值都以「。」開頭)就是使用內置的「Text to Columns」Excel選項(通過簡單地選擇整列然後ALT + A ,+ E,+ F)。如果這必須用VBA完成,請告訴。希望獨自幫助。

編輯我已經寫了這個代碼來解決你的問題(基於單元格值的規則開始用「」,然後切換到數字是通過將一個‘0’做出的初始文本) 。然後,「數字」格式由Excel作爲隱式格式提取。

Sub ChangeFormat() 
For i = 1 To 2 'This is the row index (it's now set to the 1st 2 rows.) 
    For j = 1 To 2 'This is the column Index (i.e. column 2 is B, 1 is A, etc.) (it's now set to the A and B columns) 
     If Left(ActiveSheet.Cells(i, j), 1) = "." Then 
      ActiveSheet.Cells(i, j).Value = "0" & ActiveSheet.Cells(i, j).Value 
     End If 
    Next j 
Next i 
End Sub 
+0

這需要自動化。最終結果將有多個地圖在我複製值(.0123),需要改變。現在我可以使用你的解決方案,但它可能會更好。 –

+0

ATM我真的不知道如何使用您的解決方案。由於需要在同一列中完成,並且您的解決方案需要2列 –

+0

,所以您絕對不能破解文本(特別是基於「。」字符),因此您需要檢查分隔的(不是固定寬度),然後應該保持「製表符」分隔符被打勾(沒有其他),並在列數據格式上打勾「常規」。同時檢查目標是一般刻度線下面的相同列(通常是隱含的),然後是完成。 ALT + A,+ E,+ F將文本的隱式選項用於列,如果列的單元格中沒有任何選項卡,則不會填充任何其他列。 – Takedasama