Excel 根据列中的条件将行从一张图纸复制到另一张图纸。(动态数据)

Excel 根据列中的条件将行从一张图纸复制到另一张图纸。(动态数据),excel,vba,Excel,Vba,此工作簿是为用户表单设置的,用于输入采购订单信息,以便将其添加到动态采购订单日志中。登录后,用户将关闭userform并选择一个组合框值Yes或No,以指示是否应从每月预算中扣除此PO。这就是说,如果用户选择“否”,则应将整行复制到工作簿的下一页,也就是下一个月。只有当组合框值=否时,才会通过工作表选择\更改事件发生此情况;如果用户选择“是”,则其他公式会将该值添加到总扣减中,因此循环基本上应忽略该值。此外,此工作簿中的页面完全相同,因此第二个月的范围将与第一个月的范围C14:H14相同,这将根

此工作簿是为用户表单设置的,用于输入采购订单信息,以便将其添加到动态采购订单日志中。登录后,用户将关闭userform并选择一个组合框值Yes或No,以指示是否应从每月预算中扣除此PO。这就是说,如果用户选择“否”,则应将整行复制到工作簿的下一页,也就是下一个月。只有当组合框值=否时,才会通过工作表选择\更改事件发生此情况;如果用户选择“是”,则其他公式会将该值添加到总扣减中,因此循环基本上应忽略该值。此外,此工作簿中的页面完全相同,因此第二个月的范围将与第一个月的范围C14:H14相同,这将根据选择的无值数量再次动态更新。我很难让代码只找到任何值,并将行C14:H14动态复制到下一个工作表中的下一个可用行。请看我写的附加代码

 Sub Transfer()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim lRow1 As Long
Dim lRow2 As Long
Dim i As Long
Dim Crit As Range

Set ws1 = ActiveSheet
Set ws2 = ActiveSheet.Next

lRow1 = ws1.Range("J" & Rows.Count).End(xlUp).Row

For i = 14 To lRow1

If ws1.Cells(i, 10).Value = "No" Then

ws1.Range("C" & i & ":H" & lRow1).Copy

ws2.Activate

lRow2 = ws2.Range("J" & Rows.Count).End(xlUp).Offset(1, 0).Row

ws2.Range("C14:H" & lRow2).PasteSpecial Paste:=xlPasteValues

End If

Next i

End Sub

此代码仅复制最后两个数据点,实际上忽略了该条件。如果它们在整个数据集中混合,它将复制是和否,我不知道为什么会发生这种情况。请帮我解决这个问题。提前感谢您的帮助。

您只需复制每一行-您将复制一整块行

子传输()
将ws1设置为工作表
将ws2设置为工作表
变暗lRow1与长
昏暗的lRow2与长
我想我会坚持多久
暗爆作为射程
设置ws1=ActiveSheet
设置ws2=NextVisibleSheet(ws1)“查找下一张工作表”
如果ws2算不上什么,那么“检查我们有一张表
msgbox“在”&ws1.Name之后找不到工作表
出口接头
如果结束
lRow1=ws1.Range(“J”和Rows.Count).End(xlUp).Row
lRow2=ws2.Range(“J”和Rows.Count).End(xlUp).Offset(1,0).Row
对于i=14至lRow1
如果ws1.Cells(i,10).Value=“否”,则
使用ws1.Range(“C”&i&“:H”&i)
单元格(lRow2,“C”).Resize(1.Columns.Count).Value=.Value
lRow2=lRow2+1
以
如果结束
接下来我
端接头
'给定工作表,查找下一个可见工作表(如果有)
函数NextVisibleSheet(ws-As工作表)
将rv设置为工作表
如果没有更多的图纸,则Set rv=ws.Next“不会引发错误。。。
如果不是,那就什么都不是了
当rv可见时执行此操作
设置rv=rv。下一步
如果rv为空,则退出“编辑”-添加此检查
环
如果结束
设置NextVisibleSheet=rv
端函数

非常感谢您。你真棒!还有一个问题,我有一个隐藏的工作表,存储组合框值和数据验证值列表,代码将数据复制到这个隐藏的工作表,我需要它转到下一个活动的可见工作表。你能帮忙吗?请看我上面的编辑-添加了一个函数以获得下一张可见的工作表。非常感谢!我不断得到一个函数的块错误,我看到它不应该出错,我做错了什么吗?