[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『上の値をコピー』(かつかつ)
あまり詳しくないので
教えてください。
0.1以下だったら上の値をコピーするマクロを作りました。
今はD列だけですがB列H列J列など複数行で同じ作業をしたい。
どうして応用すればいいでしょうか?
処理に時間がかからないようにしたいです。
Sub Macro1()
Dim i As Long Application.ScreenUpdating = False
With ThisWorkbook.Sheets("Sheet1")
For i = 2 To .Cells(.Rows.Count, "D").End(xlUp).Row If .Cells(i, "D") <= 0.1 Then .Cells(i, "D") = .Cells(i - 1, "D").Value End If Next i End With
< 使用 Excel:unknown、使用 OS:unknown >
同じ方であれば、前回のトピックを読み直して、違う方であればリンク先を見ていただいてから読み進めたほうがわかりやすいかと思いますが、要は、
・条件に合致するか判定する必要がないセルまで処理対象にしないこと
・セルへの書き込みは極力回数を減らすこと
が時間短縮のポイントになろうかとおもいます。
この点で、前半部分については、先のリンク先が参考になると思われます。
(後半は、一気に処理する方法は思い浮かびませんでした)
Sub サンプル弐_改() Dim tmp As Range, buf As Range, MyRNG As Range
On Error Resume Next Set tmp = Range("A1,D1,G1,I1").EntireColumn.SpecialCells(xlCellTypeConstants, xlNumbers) On Error GoTo 0
If tmp Is Nothing Then Exit Sub
'該当するセルを探すループ For Each buf In tmp If buf.Value <= 0.1 Then If MyRNG Is Nothing Then Set MyRNG = tmp Else Set MyRNG = Union(MyRNG, tmp) End If End If Next buf
MyRNG.Offset(1).Value = MyRNG.Value
'実際に値を書き込むループ If Not MyRNG Is Nothing Then For Each tmp In MyRNG tmp.Offset(1).Value = tmp.Value Next End If
End Sub
(もこな2) 2019/08/02(金) 17:59
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.