Excel:将表格行移动到另一个工作表';s表

Excel:将表格行移动到另一个工作表';s表,excel,vba,Excel,Vba,对Excel编码不是很有经验,但我自己有一个不错的方法。但是我想不出这件事 希望使工作表自动化,以便当列E中的单元格设置为“人员配置”时,宏将整行从工作表a中的表格移动到工作表B中的表格。此时,宏将剪切和粘贴的行放在新工作表的表格下方,有时是下方20多行 我将非常感谢你的帮助。多谢各位 Sub NtS() Dim xRg As Range Dim xCell As Range Dim I As Long Dim J As Long Dim K As Lon

对Excel编码不是很有经验,但我自己有一个不错的方法。但是我想不出这件事

希望使工作表自动化,以便当列E中的单元格设置为“人员配置”时,宏将整行从工作表a中的表格移动到工作表B中的表格。此时,宏将剪切和粘贴的行放在新工作表的表格下方,有时是下方20多行

我将非常感谢你的帮助。多谢各位

Sub NtS()
    Dim xRg As Range
    Dim xCell As Range
    Dim I As Long
    Dim J As Long
    Dim K As Long
    
    I = Worksheets("Clients Needing Staffed").UsedRange.Rows.Count
    J = Worksheets("Clients Staffed").UsedRange.Rows.Count

    If J = 1 Then
       If Application.WorksheetFunction.CountA(Worksheets("Clients Staffed").UsedRange) = 0 Then J = 0
    End If
    Set xRg = Worksheets("Clients Needing Staffed").Range("E1:E" & I)
    On Error Resume Next
    Application.ScreenUpdating = False

    For K = 1 To xRg.Count
        If CStr(xRg(K).Value) = "Staffed" Then
            xRg(K).EntireRow.Copy Destination:=Worksheets("Clients Staffed").Range("A" & J + 1)
            xRg(K).EntireRow.Delete
            If CStr(xRg(K).Value) = "Staffed" Then
                K = K - 1
            End If
            J = J + 1
        End If
    Next
    Application.ScreenUpdating = True
End Sub
复制和删除行(并集)
选项显式
小组委员会()
“常数
"来源:
Const srcName As String=“需要配备人员的客户”
Const srcFirstRow长度=2
Const srcLastRowCol作为Variant=“E”例如1或“A”、5或“E”。。。
常量srcCritCol作为Variant=“E”例如1或“A”、5或“E”。。。
Const srcriterias As String=“Staffed”
"目标"
Const tgtName As String=“客户已配备人员”
'以下参数必须为1或“A”,因为复制整行。
Const tgtFirstCol As Variant=“A”如1或“A”
Const tgtFirstRowCol As Variant=“A”如1或“A”
“其他的
将wb设置为工作簿:将wb=ThisWorkbook设置为具有此代码的工作簿。
"来源:
将src标注为工作表:设置src=wb.Worksheets(srcName)
最后一行的长度相同
srcLastRow=src.Cells(src.Rows.Count,srcLastRowCol).End(xlUp).Row
如果srcLastRow
复制和删除行(联合)
选项显式
小组委员会()
“常数
"来源:
Const srcName As String=“需要配备人员的客户”
Const srcFirstRow长度=2
Const srcLastRowCol作为Variant=“E”例如1或“A”、5或“E”。。。
常量srcCritCol作为Variant=“E”例如1或“A”、5或“E”。。。
Const srcriterias As String=“Staffed”
"目标"
Const tgtName As String=“客户已配备人员”
'以下参数必须为1或“A”,因为复制整行。
Const tgtFirstCol As Variant=“A”如1或“A”
Const tgtFirstRowCol As Variant=“A”如1或“A”
“其他的
将wb设置为工作簿:将wb=ThisWorkbook设置为具有此代码的工作簿。
"来源:
将src标注为工作表:设置src=wb.Worksheets(srcName)
最后一行的长度相同
srcLastRow=src.Cells(src.Rows.Count,srcLastRowCol).End(xlUp).Row
如果srcLastRow
不要像这样在错误恢复时使用
。。。这隐藏了潜在的错误。如果你想让它自动运行,也许可以看看。而且我不喜欢用VBA复制和粘贴。在B页中,它的目的地是哪里?在第一个空位置?或者与工作表A中的行相同?除了@BigBen提到的内容之外,使用
UsedRange
的问题在于它包含了该工作表中使用过的所有单元格(也就是说,工作表中最后一行的数据是10。但是您过去在第20行有一些内容。您的
UsedRange
会将行数返回为20,即使肉眼看到有10行已填充)。尝试此操作以获取
i
(和
J
)的值:
工作表(“需要人员的客户”)。单元格(工作表(“需要配备人员的客户