excel - 如果单元格值为数字,则将单元格区域除以特定数字

标签 excel vba

只有当单元格包含数值时,我才必须将工作表的所有单元格值 -“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/

相关文章:

excel - 将 $filter 与 Microsoft Graph Excel API 结合使用

windows - 当 Windows 7 计算机被锁定时,VBA 关闭 excel 文件

asp.net - Excel VBA查询外部.aspx页面并检索数据

vba - 将 Excel 工作表导出到 Access 表 (.accdb)

c# - 如何读取一系列单元格(例如 A1 :G30) from Excel file to GridView

excel - 适用于 Excel 2010/2007/2003 的日期选择器

excel - 自定义按钮事件处理类

excel - 工作表打开错误

arrays - VBA - 从现有数组有条件地填充数组

vba - 使用 Excel 中定义的范围,替换打开的 Word 文档中的 [文本]