【问题标题】:Find text and copy to another sheet查找文本并复制到另一个工作表
【发布时间】:2015-11-27 04:53:42
【问题描述】:

我有一个已导入 Excel 的日志文件,并且我已根据标准过滤了 Col C。现在我想通过 Col E 搜索“TRUE”。对于“TRUE”的每个实例,我想为 Col D、E 选择其上方的行,直到在 Col E 中找到一个空单元格,然后将其复制并粘贴到同一工作簿中的新工作表中。

根据上图,我想将工作表 1 中的第 9 行复制到第 1 行,并跳过将第 20 行复制到第 10 行(因为 Col E 为 FALSE)并复制工作表 2 中的第 31 到 21 行。

【问题讨论】:

  • 美好的一天,欢迎来到 StackOverflow。请您粘贴您当前的代码以执行您想要执行的操作,这将帮助用户查看可以帮助您的地方。一般情况下,这个网站是不允许​​用户要求别人为他们开发一些代码的。
  • 如果您需要帮助为您的想法开发代码。然后从Loop 开始运行思考列和If 你找到你正在寻找的东西开始另一个Loop 来搜索所需的文本。然后分配该范围并将其复制到新工作表。
  • 您介意与我们分享您的第一次宏尝试,以便我们帮助您取得进展。顺便说一句,您可以使用 E 列中的公式轻松完成您想要做的事情,然后自动筛选并将可见单元格复制到目标工作表...
  • 感谢您的回复。我可以在 google 和这个论坛的帮助下做到这一点,

标签: vba excel


【解决方案1】:

你可以使用.areas

如果您没有 VBA 经验并且不知道要寻找什么,这将是一个难题。这是一个先机,根据您提供的图片,我想出了这个。

Sub DoIt()
    Dim sh As Worksheet, ws As Worksheet
    Dim RangeArea As Range, c As Range

    Set sh = ActiveSheet
    Application.ScreenUpdating = 0

    With sh
        For Each RangeArea In .Columns("E").SpecialCells(xlCellTypeConstants, 23).Areas
            Set c = RangeArea.Find(what:="TRUE", lookat:=xlWhole)
            If Not c Is Nothing Then
                RangeArea.EntireRow.Copy
                Sheets.Add
                ActiveSheet.Paste
            Else
            End If
            .Select
        Next RangeArea
    End With
    Application.CutCopyMode = 0
End Sub

【讨论】:

    猜你喜欢
    • 2022-11-04
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多