-1

広い範囲(1000行以上)でセル値「noinfo」をクリアする必要があります。以下のマクロを使用していますが、非常に遅いです。おそらく、このタスクを実行するためのより良い方法がありますか?

For Each cell In Range("L2:N" & Range("N" & Rows.count).End(xlUp).Row)
    If cell.Value = "noinfo" Then cell.ClearContents
Next cell
4

1 に答える 1

0

すべての値を配列にコピーし、配列を変更して、一度に範囲に書き込む方がはるかに高速であることがわかりました。

Dim values(), r As Long, c As Long
With Range("L2:N" & Range("N" & Rows.Count).End(xlUp).Row)
    values = .Value
    For r = 1 To UBound(values, 1)
        For c = 1 To UBound(values, 2)
             If values(r, c) = "noinfo" Then values(r, c) = Empty
        Next
    Next
    .Value = values
End With

利点:

  • すべての値を書き込むまで、画面の更新や計算は行われません。
  • プロパティではなく、固有のデータを使用します。
于 2013-08-23T08:27:50.683 に答える