简体   繁体   中英

Move down one row all cells from one column (offset)

I would like to move down one row all the cells from a column (in my case column C). It means if I have “X” written in cell C1, it should move down to Cell C2, if I have “Y” written in cell C1000,it should move down to Cell C1001…

I have the following error message:

Run time error 1004, application defined or object defined error

Sub movedownrowcolumnC()    
    Range("C:C").Offset(1).Select
End Sub

use:

Cells(Rows.Count, "C").End(xlUp).Offset(1).Select

although you most probably don't need to Select anything and just go with the Range variable:

Sub movedownrowcolumnC()
    Dim myRange As Range
    Set myRange = Cells(Rows.Count, "C").End(xlUp).Offset(1)

    myRange.Value = "myValue"
End Sub

While much more than just "good coding practice" is to always explicitly qualify a Range object up to its Worksheet reference:

Sub movedownrowcolumnC()
    Dim myRange As Range

    With Worksheets("mySheetName") ' reference wanted worksheet (change "mySheetName" to your actual relevantsheet name)
        Set myRange = .Cells(.Rows.Count, "C").End(xlUp).Offset(1) ' ser referenced worksheet column C cells right below last not empty one
    End With

    myRange.Value = "myValue"
End Sub

try below macro.

Sub MoveDowncolumn()
Dim lastRow As Integer
With Worksheets("Sheet1")
lstrow = .Cells(Rows.Count, "C").End(xlUp).Row
For i = lstrow To 1 Step -1
.Cells(i + 1, "C").Value = .Cells(i, "C").Value
Next i
End With
End Sub

你有要求吗?

Range("C1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

You can you:

Option Explicit

Sub Test()

    With ThisWorkbook.Worksheets("Sheet1")
        If .Range("C1").Value = "Test" Then
           .Rows(.Range("C1").Row + 1).Select
        End If
    End With

End Sub

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM