所以我能想到的最好的方法是在大范围内(大约450k行)实现这个目的是使用以下Sue-do代码:
Range("A1").Copy ' A1 Contains Value I want to multiply column by
Range("MyTable[FooColumn]").PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
Run Code Online (Sandbox Code Playgroud)
现在这样可行,但事实上我必须复制并粘贴该值似乎是多余的,因为值永远不会改变.
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
Run Code Online (Sandbox Code Playgroud)
这有效,但速度较慢.因为它必须循环每个细胞.
我也尝试过:
With Range("MyTable[MyColumnHeader]")
.Value = .Value * 453.592
End With
Run Code Online (Sandbox Code Playgroud)
但是如果列中有多个值,则收到运行时错误类型不匹配错误.
我考虑插入一个列并使用"=R-1C * 453.592"Then 的formulaR1C1 .Value = .Value然后移动列并覆盖,但看起来很笨重,我认为也比粘贴倍增慢.
那么,有没有人有更好的方法来完成这项任务?
我试图简单地将两个范围相乘,并且它是由 activeX 按钮激活的,但它一直给我#Name?来自乘法错误的错误 obv 但我不知道如何正确编辑它。谢谢
Private Sub CommandButton1_Click()
Dim rngData As Range
Dim rngNum As Range
Set rngData = ThisWorkbook.Worksheets("Custom Systems").Range("G16")
Set rngNum = ThisWorkbook.Worksheets("Custom Systems").Range("c8")
rngData = Evaluate(rngData.Address & "* rngNum")
End Sub
Run Code Online (Sandbox Code Playgroud)