Excel VBA [仅]将行值从一个工作表移动到另一个工作表-当前代码正常工作,只是需要调整

djp7away  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(163)

这是目前的设置,我发现有帮助,并已修改工作良好...然而,我挣扎着一个小的进一步和最后的修改。我想只是-粘贴值,而不是公式。

Sub move_rows_to_another_sheet()
    '
    Sheets("User").Select
    Columns("A:Y").Select
    Range("A:Y").Activate
    '
    For Each myCell In Selection.Columns(25).Cells
        If myCell.Value = "Closed" Then
            myCell.EntireRow.Copy Worksheets("Archive").Range("A" & Rows.Count).End(3)(2)
            myCell.EntireRow.Delete
        End If
    Next
    '
    Range("A2").Select
End Sub
''Updated Version - Move Single Rows
'
Sub move_rows_to_another_sheet()
    '
    Sheets("Users").Select
    Columns("A:Y").Select
    Range("A:Y").Activate
    '
    For Each mycell In Selection.Columns(25).Cells
    '
    If mycell.Value = "Closed" Then
        mycell.EntireRow.Copy
        Worksheets("Archive").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
        mycell.EntireRow.Delete
    End If
    Next
    '
Range("A2").Select
End Sub

这个想法很简单...当前代码是成功的,但是,我想只是复制和粘贴行单元格内容的[值]和[不是]公式等格式是罚款和一切,我只需要记录的功能公式的结果。
我已经尝试了各种选项,如[myCell. EntireRow. CopyValues]甚至[& Rows. Count & Rows. PasteSpecial]...有什么想法吗?
先谢了

hjzp0vay

hjzp0vay1#

我试过你的代码。它看起来像当有几个单元格与“关闭”它不会为所有的工作。因为当一个删除,一个应该从下往上删除。但然后在存档中的数据是不是在正确的顺序。
在你的原始代码中你可以把范围变小,这样它会运行得更快。
或者从这段代码中得到你想要的

Sub move_rows_to_another_sheet2()

    
    Dim mycell As Range
    Dim checkClosed
    Dim Lastrow As Long
    Dim i As Long
    
    
    Set checkClosed = ThisWorkbook.Worksheets("User").Range("Y1:Y10000")
    Lastrow = Worksheets("Archive").Cells(Rows.Count, 1).End(xlUp).Row + 1 'one cell below last used cell in column A

    For i = 10000 To 1 Step -1 'from row 10000 to row 1
        Set mycell = ThisWorkbook.Worksheets("User").Cells(i, "Y")
        
        If LCase(mycell.Value) = "closed" Then 'checks for Closed and closed
            mycell.EntireRow.Copy
            Worksheets("Archive").Range("A" & Lastrow).PasteSpecial Paste:=xlPasteValues
            mycell.EntireRow.Delete
            Lastrow = Lastrow + 1
        End If
    Next i
    '
    Range("A2").Select
End Sub

相关问题