Vba 如何基于if-then将行复制到另一张图纸
我正在尝试编写一个宏,如果满足某些值,它会将一行复制到另一个工作表。有多个可能的目的地。这是我拼凑的东西,但我肯定它很乱。基本上,如果第14列中有“不适用”,第8列中有“应用”,则将其复制到应用选项卡。安琪、凯西等的故事Vba 如何基于if-then将行复制到另一张图纸,vba,excel,Vba,Excel,我正在尝试编写一个宏,如果满足某些值,它会将一行复制到另一个工作表。有多个可能的目的地。这是我拼凑的东西,但我肯定它很乱。基本上,如果第14列中有“不适用”,第8列中有“应用”,则将其复制到应用选项卡。安琪、凯西等的故事 Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Reconciliation") Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("APP") Dim ws3 As
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Reconciliation")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("APP")
Dim ws3 As Worksheet: Set ws3 = ThisWorkbook.Sheets("Angie")
Dim ws4 As Worksheet: Set ws4 = ThisWorkbook.Sheets("Cathy")
Dim ws5 As Worksheet: Set ws5 = ThisWorkbook.Sheets("Cory")
Dim ws6 As Worksheet: Set ws6 = ThisWorkbook.Sheets("Curt")
For Each i In ws1.Range("A1:A1000")
If ws1.Cells(i, 14) = "#N/A" Then
If ws1.Cells(i, 8) = "APP" Then
ws1.Rows(i).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 2).End(xlUp).Row + 1)
End If
End If
Next i
如果有具有匹配名称的工作表,这将复制该行:
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Reconciliation")
Dim ws
For Each i In ws1.Range("A1:A1000").Cells
If ws1.Cells(i.Row, 14).Value = cverr(2042) Then
Set ws = Nothing
On Error Resume Next
Set ws = ThisWorkbook.Sheets(ws1.Cells(i.Row, 8).Value)
on error goto 0
If Not ws Is Nothing Then
i.EntireRow.Copy ws.Rows(ws.Cells(ws.Rows.Count, 2).End(xlUp).Row + 1)
End If
on error goto 0
End If
Next i
为什么不打圈?谢谢蒂姆。我对这一点非常陌生。你能解释一下你的代码中发生了什么吗?其他的床单呢?如何为其他工作表添加下一行?这就是全部代码。它从第8列获取单元格值,并尝试将
ws
设置为具有该名称的工作表(如果工作表不存在,则忽略任何错误)。如果工作表确实存在,则ws
不是=Nothing
,并将该行复制到该工作表。基本上,它会将任何一行复制到工作簿中与第8列中的值同名的工作表中。还修复了对#N/A的检查(除非您的单元格中实际有文本“#N/A”,在这种情况下,您可以切换回您的版本);-)谢谢你,蒂姆。它实际上是一个单元格,其“N/a”作为公式的输出。我将Value=cverr(2042)更改为Value=“N/A”,得到了一个类型不匹配错误。有什么建议吗?如果#N/A来自一个公式,那么就让它保持原样。添加Debug.Print ws1.Cells(I.Row,14)。在If
行之前添加值。您看到了什么(在VB编辑器的即时窗格中)?