私はColumns(2).Copy Destination:=Columns(1)
を仮使用して "x"の1列を左に含むすべてのセルをオフセットしていますが、メモリが非常に消費され、 "x"値だけをオフセットすることはできません。"x"を含むセルをオフセットする最も効率的な方法
このコンディションが満たされたセルだけをオフセットし、より効率的な方法で作成する方法はありますか?
私はColumns(2).Copy Destination:=Columns(1)
を仮使用して "x"の1列を左に含むすべてのセルをオフセットしていますが、メモリが非常に消費され、 "x"値だけをオフセットすることはできません。"x"を含むセルをオフセットする最も効率的な方法
このコンディションが満たされたセルだけをオフセットし、より効率的な方法で作成する方法はありますか?
あなたはおそらく、あなたが持っているしかし、多くの行のために100を設定し、この
For i = 1 To 100
If ActiveSheet.Cells(i, 2).Value = "x" Then
ActiveSheet.Cells(i, 1).Value = ActiveSheet.Cells(i, 2).Value
End If
Next
のようなものを試してみたいと思います。私はこれがあなたが持っているものよりも速く動くかどうかも分かりません。私はあなたの目標をここで欠場していない限り。
、あなたはシート
For Each rcell In ActiveSheet.Cells
If recll.Column >= 1 And rcell.Value = "x" Then
ActiveSheet.Cells(rcell.Row, rcell.Column - 1).Value = ActiveSheet.Cells(rcell.Row, rcell.Column).Value
End If
Next
内のすべてのセルを通過したいが、この1つは、おそらく本当に長い時間がかかる場合。理想的には、使用している最後の行と列を知っている場合は、ネストされたループを使用する必要があります。このようにして、データが含まれていると思われるセルを反復するだけです。
、しかしでループの各-について、全範囲のために:(:C A)のためにあなたがにあなたの範囲を設定した場合、しかしこれに注意する必要があり
Sub MoveOver()
Dim rng As Range
Dim c As Range
Set rng = ThisWorkbook.Worksheets("Sheet1").Range("B:B")
For Each c In rng
If c.Value = "x" Then c.Offset(0, -1) = c.Value
Next c
End Sub
たとえば、そのようなオフセットを使用してエラーが発生します。したがって、2列目以降を開始するときは注意が必要です。カラム# – user3005775