只有当单元格包含数值时,我才必须将工作表的所有单元格值 -“Databook”除以数字 1000000。这意味着我必须只划分表格中包含 17577.2、2123、13979123.22、239812098321.1 和 9798 等数字的单元格。
Sub i()
'declare variables
Dim ws As Worksheet
Dim rng As Range
Dim myVal As Range
Set ws = Worksheets("Sheet1")
Set rng = ws.Range("A:Z")
For Each myVal In rng
If IsNumeric(myVal) = True Then
myVal = myVal.Value / 1000000
Else
Next myVal
End Sub
最佳答案
您目前缺少 End If
,因此您当前的代码根本不会运行。正确缩进您的代码会发现问题。我还建议不要尝试循环当前范围内的所有单元格。请注意,这些是(至少对于 Excel 2019)27.262.976 个单元格要经过(您可能希望首先找到您感兴趣的范围;最后使用的行,最后使用的列)。这么多的电话会非常慢。至少只使用实际数值来限制这些数字。
尝试使用 SpecialCells
.工作方式 > <YourRange>.SpecialCells(XlCellType, [XlSpecialCellsValue])
.例如:
Sub Test()
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Sheet1")
For Each cl In ws.Range("A:Z").SpecialCells(2, 1)
cl.Value = cl.Value / 1000000
Next
End Sub
地点:
.SpecialCells(2, 1)
也可以读作 .SpecialCells(xlCellTypeConstants, xlNumbers)
注:如果您有大量包含数值的单元格,循环
Areas
可能会有所帮助。属性而不是 Cells
因为您可以将它们加载到数组中并在粘贴回这些值之前在内存中执行计算。这也可以为您节省一些宝贵的运行时间。
关于excel - 如果单元格值为数字,则将单元格区域除以特定数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61439501/