【问题标题】:Excel vba - Search for data in 2 columns then move row to another sheetExcel vba - 在 2 列中搜索数据,然后将行移动到另一个工作表
【发布时间】:2015-06-29 13:57:36
【问题描述】:

我必须对电子表格中的数百行进行排序。我想尝试使用 vba 代码自动执行此任务,但我不知道该怎么做。

在电子表格中,我需要向下搜索“A”列(直到数据末尾)并识别“A”列中包含文本/单词“资产”的任何单元格。如果单元格确实包含文本“资产”,请沿同一行检查“N”列中的单元格。如果“N”列中同一行的相应单元格为空白,则将整行移动到名为“已删除”的新工作表中

谁能帮忙写一些vba代码

谢谢 伊恩

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    你知道你需要检查多少行,或者你需要一个自动停止的函数吗?

    Sub CopyPaste()
    
    Dim MyRange as Range
    Dim Current_Range as Range
    
    'Nb_Rows can be any integer, even higher than the real number of rows.
    For i = 1 To Nb_Rows
    If Range("A" & i).Value = "asset" Then
        If Range("N" & i).Value = "" Then
            Set Current_Range = Cells(i, 1)
            If MyRange Is Nothing Then
                Set MyRange = Current_Range
            Else
                Set MyRange = Application.Union(MyRange, Current_Range)
            End If
        End If
    End If
    Next i
    
    If MyRange Is Nothing Then
        Exit Sub
    Else
        MyRange.EntireRow.Cut
        Sheets("Removed").Paste
    End If
    
    End Sub
    

    这段代码应该可以工作。 我使用Nb_Rows 进行循环,也许您应该更改该值。 请注意,我复制/粘贴了行,这意味着它们将保留在第一张纸上。我还假设您在激活第一张工作表时启动宏。

    【讨论】:

    • 您好,感谢您的快速回复。行数因电子表格而异。通常从 100 到 6-700 所以真的需要一个自动停止的功能(除非我可以将 Nb 更改为 1000 以便它检查到第 1000 行)?此外,我需要将它们从原始工作表中移除,因此需要将它们剪切和粘贴(我可以将复制换成剪切)吗?谢谢
    • 您可以将Nb_Rows 设置为1000,它将检查到第1000 行而不剪切空行,因此不会更改任何内容。您可以将.Copy 替换为.Cut。这仅在工作表“已删除”为空时才有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    相关资源
    最近更新 更多