Excel 将单元格的值剪切并粘贴到vba中的另一个单元格

Excel 将单元格的值剪切并粘贴到vba中的另一个单元格,excel,vba,Excel,Vba,我需要转移或移动F列的值,直到最后一个单元格的值转移到D列,如果C列等于“RRR”。我无法突出显示或选择从“RRR”位置到最后一个值为“SSS”的单元格的范围。相反,它选择的范围是C4:C9,这是错误的 Dim ws As Worksheet, lRow As Long Set ws = ThisWorkbook.ActiveSheet lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row Dim lCol As Long With ws

我需要转移或移动F列的值,直到最后一个单元格的值转移到D列,如果C列等于“RRR”。我无法突出显示或选择从“RRR”位置到最后一个值为“SSS”的单元格的范围。相反,它选择的范围是C4:C9,这是错误的

    Dim ws As Worksheet, lRow As Long

Set ws = ThisWorkbook.ActiveSheet
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row

Dim lCol As Long

With ws
    For x = 1 To lRow
        If .Cells(x, 3).Value = "RRR" Then
            lCol = Cells(x, Columns.Count).End(xlToLeft).Column
            Range("C" & x & ":C" & lCol).Select
        End If
    Next x
End With
例如:

预期:


有人能告诉我代码中的问题吗。

您非常接近,只有应修改的选择范围

因此,您可以建立您的范围:

Range(A1:D1) -> Range(Cells(A1), Cells(D1)) -> 

Range(Cells(row number, column number), Cells(row number, column number)) -> 

Range(Cells(1, 1), Cells(1, 4))
这应该可以做到:

Dim ws As Worksheet, lRow As Long
Dim x As Long

Set ws = ThisWorkbook.ActiveSheet
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row

Dim lCol As Long

With ws
    For x = 1 To lRow
        If .Cells(x, 3).Value = "RRR" Then
            lCol = Cells(x, Columns.Count).End(xlToLeft).Column 'Find the last column number
            Range(Cells(x, 6), Cells(x, lCol)).Cut Cells(x, 4) 'Cut from row x and Column F (Column F = 6) to row x and column "lCol". Then paste the range into row x and column 4.
        End If
    Next x
End With

End Sub

另一种方法是删除列
D
E

Dim ws As Worksheet, lRow As Long
Dim x As Long

    Set ws = ThisWorkbook.ActiveSheet
    lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row

    Dim lCol As Long

    With ws
        For x = 1 To lRow
            If .Cells(x, 3).Value = "RRR" Then .Range("C" & x & ":D" & x).Delete Shift:=xlToLeft
            End If
        Next x
    End With

    End Sub

这不起作用的原因是:
范围(“C”&x&“:C”&lCol)。选择
是因为你说,范围应该是从(C列和x行,即C4)到(C列和等于lCol给你的值的行,即C9)非常感谢。欢迎你,谢谢你!!!,你做了大部分工作:)!!我想给你最后一个建议。声明所有变量(未声明x)。一个好习惯是制作VBA力变量,这样你就不会错过它。当您编写代码时,它将对您有很大帮助:)。祝你好运,快乐编码:D!!