web-dev-qa-db-ja.com

ExcelVBA-範囲内の各セルに機能を実行する

Rng1という範囲があるとしましょう

Set rng1 = Worksheets("Sheet1").Range("A1","A5")

数学関数を実行するための迅速で簡単な方法はありますか?たとえば、rng1のすべてのセルについて、これらすべてのセル値を2で除算しますか?

どんな助けでも大歓迎です!

7
user1130306

非常に簡単ですが、最終的なコードは、新しい値を格納する場所によって異なります。たとえば、値を2で割った値を次の列に格納する場合:

_Sub test()

Dim cell As Range

For Each cell In Range("A1:A5")
    cell.Offset(, 1).Value = cell.Value / 2
Next

End Sub
_

範囲が広い場合はオフセットを使用するよりも効率的な方法がありますが、範囲が狭い場合は、これは完全に許容可能で高速です。

値を上書きしたい場合は、cell.Offset(,1).Valueの代わりに_cell.Value_を使用できます。

15
aevanko

別の方法

Sub Main()
    [B1:B5] = [INDEX((A1:A5/2),)]
End Sub

それがどのように機能するかはよく説明されています ここ。

2
Santosh