2017-09-18 49 views
-1

我有一个Excel工作表中的范围,硬编码值,以百万计。我如何编写一个VBA宏来将选定范围除以一百万?VBA:宏分割范围百万

此致敬礼

+0

手动使用宏录像机,它会告诉你一种代码的方式。 – braX

回答

8

没有宏需要。

  • 写1,000,000一个细胞
  • 复制该小区
  • 选择具有硬编码值
  • Paste Special和范围选择Divide
  • OK

enter image description here

+0

在我使用Excel的几年中,除了将它用作Paste as Values之外,我始终忽略了Paste Special。这是很酷的功能,感谢分享! – 0x11

3

对于像这样简单的事情,我会在该范围附近的区域(如果一行,旁边是一列等)下面写一个公式,然后复制/粘贴为值并替换原始区域。

如果您确实想为此创建一个宏,您可以将一个范围指定给一个变量,包括所选范围。从那里,通过在范围内的每个细胞循环和更换所需的值值(像这样):

Dim cell as Object 

For Each cell in Selection 
    cell.value = cell.value/1000000 
Next cell 
2

使用自定义数字格式,使看起来象是由一百万分同时保持细胞真正的原始基础价值。

sub meh() 
    selection.numberformat = "0,,\M" 
end sub 

我已经添加了中号作为一个单元的后缀。

4

没有循环需要

Sub MyDivide 
    Selection.Value = Selection.Parent.Evaluate("INDEX(" & Selection.address & "/1000000,)") 
End Sub 

只需选择你想要的细胞和运行子。

+0

对于单个单元格或单元格的标准矩形很不错,但对于非连续范围不是非常友好。 (如果选择的不是连续的范围,则显示为清除单元格,我认为是由于'Selection.Address'中的','被错误解释。) – YowE3K

+0

这是正确的,它需要连续。 @ YowE3K –