因此,我能想到的在大范围(约 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
但如果列中的值超过一个,则会收到运行时错误类型不匹配错误。
我考虑过插入一列并使用 Then 的公式 R1C1 "=R-1C * 453.592"
,.Value = .Value
然后移动列并覆盖但看起来很笨重,我认为粘贴相乘也会慢一些。
那么,有没有人有更好的方法来完成这项任务?