因此,我能想到的在大范围(大约 450k 行)上完成此操作的最佳方法是使用以下 Sue-do 代码:
Range("A1").Copy ' A1 Contains Value I want to multiply column by
Range("MyTable[FooColumn]").PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
现在这可行了,但我必须复制并粘贴该值的事实似乎是多余的,因为该值永远不会改变。
For Each c In Range("MyTable[MyColumnHeader]")
If IsNumeric(c) And Not c = "" Then
c.Value = c.Value * 453.592 ' The value that is in A1 from previos sample
End If
Next
这有效,但速度较慢。因为它必须循环每个单元格。
我也尝试过:
With Range("MyTable[MyColumnHeader]")
.Value = .Value * 453.592
End With
但如果列中存在多个值,则会收到运行时错误“类型不匹配错误”。
我考虑过插入一列并使用公式R1C1"=R-1C * 453.592"
Then .Value = .Value
,然后移动列并覆盖,但看起来很笨重,我认为也比粘贴乘法慢。
那么,有人有更好的方法来完成这项任务吗?
Sub Test()
Dim rngData As Range
Set rngData = ThisWorkbook.Worksheets("Sheet1").Range("A1:B10")
rngData = Evaluate(rngData.Address & "*2")
End Sub
有点过时了,但这就是您想要的吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)