したがって、これを広い範囲 (約 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
ただし、列に複数の値がある場合、実行時エラー Type Mismatch Error を受け取りました。
"=R-1C * 453.592"
列を挿入し、 Thenの FormulaR1C1 を使用することを考えました.Value = .Value
。その後、列をシフトして上書きしますが、扱いにくいようで、貼り付けの乗算よりも遅くなると思います。
それで、誰かがこのタスクを達成するためのより良い方法を持っていますか?