2013-11-14 71 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