Vba 在一张图纸上查找单元格并将行复制到另一张图纸
我有一个名为Backlog的工作表,其中包含数据的行和列。我需要的代码将在第二列到最后一列中逐行搜索#N/A。当它找到#N/A时,需要检查最后一列是否包含C。如果它包含一个C,那么整行应该附加到一个名为Logoff的表中。如果最后一列不包含C,则应将整行追加到名为Denied的工作表中。一旦移动到注销或拒绝,该行应从原始积压工作表中删除。我下面的代码不起作用。在第一个For语句之后,它转到End Sub,但没有任何编译错误Vba 在一张图纸上查找单元格并将行复制到另一张图纸,vba,excel,copy-paste,autofilter,Vba,Excel,Copy Paste,Autofilter,我有一个名为Backlog的工作表,其中包含数据的行和列。我需要的代码将在第二列到最后一列中逐行搜索#N/A。当它找到#N/A时,需要检查最后一列是否包含C。如果它包含一个C,那么整行应该附加到一个名为Logoff的表中。如果最后一列不包含C,则应将整行追加到名为Denied的工作表中。一旦移动到注销或拒绝,该行应从原始积压工作表中删除。我下面的代码不起作用。在第一个For语句之后,它转到End Sub,但没有任何编译错误 Private Sub CommandButton2_Click()
Private Sub CommandButton2_Click()
Dim IMBacklogSh As Worksheet
Set IMBacklogSh = ThisWorkbook.Worksheets("Backlog")
Dim logoffSh As Worksheet
Set logoffSh = ThisWorkbook.Worksheets("Claims Logged off")
Dim deniedsh As Worksheet
Set deniedsh = ThisWorkbook.Worksheets("Claims Denied")
IMBacklogSh.Select
Dim i As Long
For i = 3 To Cells(Rows.Count, 13).End(xlUp).Row
If Cells(i, 13).Value = "#N/A" Then
If Cells(i, 14).Value = "C" Then
IMBacklogSh.Rows(i).EntireRow.Copy Destination:=logoffSh.Range("A" & logoffsh.Cells(Rows.Count, "A").End(xlUp).Row + 1)
Else
IMBacklogSh.Rows(i).EntireRow.Copy Destination:=deniedsh.Range("A" & deniedsh.Cells(Rows.Count, "A").End(xlUp).Row + 1)
End If
End If
Next i
End Sub
将其作为如果单元格(i,13)进行尝试。Text=“#N/A”然后<代码>#N/A
是错误代码,不是值;但是,可以检查或用于检查单元格内容是否存在任何错误
If Cells(i, 13).Text = "#N/A" Then
'Alternate with IsError
'If IsError(Cells(i, 13)) Then
If Cells(i, 14).Value = "C" Then
IMBacklogSh.Rows(i).EntireRow.Copy _
Destination:=logoffSh.Range("A" & logoffsh.Cells(Rows.Count, "A").End(xlUp).Row + 1)
Else
IMBacklogSh.Rows(i).EntireRow.Copy _
Destination:=deniedsh.Range("A" & deniedsh.Cells(Rows.Count, "A").End(xlUp).Row + 1)
End If
End If
然而,单个细胞检查是不必要和耗时的。可用于将#N/A
与C
隔离,将#N/A
与C
隔离
Private Sub CommandButton2_Click()
Dim IMBacklogSh As Worksheet, logoffSh As Worksheet, deniedsh As Worksheet
Set IMBacklogSh = ThisWorkbook.Worksheets("Backlog")
Set logoffSh = ThisWorkbook.Worksheets("Claims Logged off")
Set deniedsh = ThisWorkbook.Worksheets("Claims Denied")
With IMBacklogSh
If .AutoFilterMode Then .AutoFilterMode = False
With .Cells(1, 1).CurrentRegion
.AutoFilter field:=13, Criteria1:="#N/A"
.AutoFilter field:=14, Criteria1:="C"
With .Resize(.Rows.Count - 1, Columns.Count).Offset(1, 0)
If CBool(Application.Subtotal(103, .Cells)) Then
.Copy Destination:= _
logoffSh.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
'optionally delete the originals
.EntireRow.Delete
End If
End With
.AutoFilter field:=14, Criteria1:="<>C"
With .Resize(.Rows.Count - 1, Columns.Count).Offset(1, 0)
If CBool(Application.Subtotal(103, .Cells)) Then
.Copy Destination:= _
deniedsh.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
'optionally delete the originals
.EntireRow.Delete
End If
End With
End With
If .AutoFilterMode Then .AutoFilterMode = False
End With
End Sub
Private子命令按钮2\u单击()
Dim IMBacklogSh作为工作表,logoffSh作为工作表,deniedsh作为工作表
设置IMBacklogSh=ThisWorkbook.Worksheets(“积压工作”)
设置logoffSh=ThisWorkbook.Worksheets(“索赔注销”)
Set-deniedsh=ThisWorkbook.Worksheets(“索赔被拒绝”)
带着IMBacklogSh
如果.AutoFilterMode,则.AutoFilterMode=False
带.Cells(1,1).CurrentRegion
.自动筛选字段:=13,标准1:=“#不适用”
.自动筛选字段:=14,标准1:=“C”
使用.Resize(.Rows.Count-1,Columns.Count).Offset(1,0)
如果是CBool(Application.Subtotal(103.Cells)),则
.复制目的地:=_
logoffSh.Cells(Rows.Count,“A”).End(xlUp).偏移量(1,0)
'可以选择删除原件
.EntireRow.Delete
如果结束
以
.自动筛选字段:=14,标准1:=“C”
使用.Resize(.Rows.Count-1,Columns.Count).Offset(1,0)
如果是CBool(Application.Subtotal(103.Cells)),则
.复制目的地:=_
deniedsh.单元格(Rows.Count,“A”).结束(xlUp).偏移量(1,0)
'可以选择删除原件
.EntireRow.Delete
如果结束
以
以
如果.AutoFilterMode,则.AutoFilterMode=False
以
端接头
尝试将其作为如果单元格(i,13)。Text=“#N/A”然后
<代码>#N/A
是错误代码,不是值;但是,可以检查或用于检查单元格内容是否存在任何错误
If Cells(i, 13).Text = "#N/A" Then
'Alternate with IsError
'If IsError(Cells(i, 13)) Then
If Cells(i, 14).Value = "C" Then
IMBacklogSh.Rows(i).EntireRow.Copy _
Destination:=logoffSh.Range("A" & logoffsh.Cells(Rows.Count, "A").End(xlUp).Row + 1)
Else
IMBacklogSh.Rows(i).EntireRow.Copy _
Destination:=deniedsh.Range("A" & deniedsh.Cells(Rows.Count, "A").End(xlUp).Row + 1)
End If
End If
然而,单个细胞检查是不必要和耗时的。可用于将#N/A
与C
隔离,将#N/A
与C
隔离
Private Sub CommandButton2_Click()
Dim IMBacklogSh As Worksheet, logoffSh As Worksheet, deniedsh As Worksheet
Set IMBacklogSh = ThisWorkbook.Worksheets("Backlog")
Set logoffSh = ThisWorkbook.Worksheets("Claims Logged off")
Set deniedsh = ThisWorkbook.Worksheets("Claims Denied")
With IMBacklogSh
If .AutoFilterMode Then .AutoFilterMode = False
With .Cells(1, 1).CurrentRegion
.AutoFilter field:=13, Criteria1:="#N/A"
.AutoFilter field:=14, Criteria1:="C"
With .Resize(.Rows.Count - 1, Columns.Count).Offset(1, 0)
If CBool(Application.Subtotal(103, .Cells)) Then
.Copy Destination:= _
logoffSh.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
'optionally delete the originals
.EntireRow.Delete
End If
End With
.AutoFilter field:=14, Criteria1:="<>C"
With .Resize(.Rows.Count - 1, Columns.Count).Offset(1, 0)
If CBool(Application.Subtotal(103, .Cells)) Then
.Copy Destination:= _
deniedsh.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
'optionally delete the originals
.EntireRow.Delete
End If
End With
End With
If .AutoFilterMode Then .AutoFilterMode = False
End With
End Sub
Private子命令按钮2\u单击()
Dim IMBacklogSh作为工作表,logoffSh作为工作表,deniedsh作为工作表
设置IMBacklogSh=ThisWorkbook.Worksheets(“积压工作”)
设置logoffSh=ThisWorkbook.Worksheets(“索赔注销”)
Set-deniedsh=ThisWorkbook.Worksheets(“索赔被拒绝”)
带着IMBacklogSh
如果.AutoFilterMode,则.AutoFilterMode=False
带.Cells(1,1).CurrentRegion
.自动筛选字段:=13,标准1:=“#不适用”
.自动筛选字段:=14,标准1:=“C”
使用.Resize(.Rows.Count-1,Columns.Count).Offset(1,0)
如果是CBool(Application.Subtotal(103.Cells)),则
.复制目的地:=_
logoffSh.Cells(Rows.Count,“A”).End(xlUp).偏移量(1,0)
'可以选择删除原件
.EntireRow.Delete
如果结束
以
.自动筛选字段:=14,标准1:=“C”
使用.Resize(.Rows.Count-1,Columns.Count).Offset(1,0)
如果是CBool(Application.Subtotal(103.Cells)),则
.复制目的地:=_
deniedsh.单元格(Rows.Count,“A”).结束(xlUp).偏移量(1,0)
'可以选择删除原件
.EntireRow.Delete
如果结束
以
以
如果.AutoFilterMode,则.AutoFilterMode=False
以
端接头
链接的副本显示了如何在列中查找错误。复制到另一个工作表是一件简单的事情。如果您在复制行时遇到困难,请返回并编辑您的问题,以包括您自己的努力。我添加了我的代码。我不明白为什么在For声明之后它不起作用。当我调试时,它会在For I=3语句之后立即跳到末尾,并且不会对任何行进行求值。链接的副本显示了如何在列中查找错误。复制到另一个工作表是一件简单的事情。如果您在复制行时遇到困难,请返回并编辑您的问题,以包括您自己的努力。我添加了我的代码。我不明白为什么在For声明之后它不起作用。当我调试时,它会在For I=3语句之后立即跳到末尾,并且不会对任何行求值。谢谢。自动筛选代码工作得很好。谢谢。自动筛选代码工作得很好。