【问题标题】:Copy entire rows based on multiple values根据多个值复制整行
【发布时间】:2021-09-27 09:35:44
【问题描述】:

我的第一张工作表是模板,所有值都将由用户输入。
第二张表是我要将信息复制到的位置。

我创建了一个命令按钮,用于复制第一批信息(即公司徽标、公司信息和客户信息)。

我的第二个命令按钮是我的问题开始的地方。
根据“O”列中的值,我有整行要复制。
如果“O”列 >= 1 或如果“O”列有“x”,则应复制该行。到目前为止,它复制了“x”,而没有特定的代码行说明这一点。

-当我运行代码时,它开始复制到第 1 行。我需要它开始复制到第 34 行
- 如果“O”列中的值为“x”,那么它会复制该行,但随后会将下一行复制到前一行之上,它不会移动到下一行。但是,当它复制值 >1 的行时,它会移动到下一行并复制它。

'Sheet1 is named Template1
'Sheet2 is named Copy data
 
a = Worksheets("Template1").Cells(Rows.Count, 1).End(xlUp).Row
 
For i = 34 To a
    If Worksheets("Template1").Cells(i, 15) >= 1 Then
        Worksheets("Template1").Rows(i).Copy
        Worksheets("Copy data").Activate
        
        B = Worksheets("Copy data").Cells(Rows.Count, 1).End(xlUp).Row
         
        Worksheets("Copy data").Cells(B + 1, 1).Select
        
        ActiveSheet.Paste
        Worksheets("Template1").Activate
        
    End If
Next
 
Apllication.CutCopyMode = False
ThisWorkbook.Worksheets("Template1").Cells(1, 1).Select

【问题讨论】:

    标签: excel vba copy-paste


    【解决方案1】:

    希望它有利于您的业务

    Dim lr As Integer, alan As Range
    Dim sa1 As Worksheet, sa2 As Worksheet
    Dim i As Integer
    
    Set sa1 = Worksheets("Template1")
    Set sa2 = Worksheets("Copy data")
    lr = sa1.Cells(Rows.Count, 1).End(xlUp).Row
    Set alan = sa1.Range("A34", "O" & lr)
    
    For i = 34 To alan.Rows.Count + 34
            If sa1.Cells(i, 15) >= 1 Or sa1.Cells(i, 15) = "x" Then
                    sa1.Range("a" & i).Resize(, alan.Columns.Count).Copy _
                    sa2.Range("A" & sa2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row)
            End If
    Next i
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多