【问题标题】:Search for text, copy offset rows搜索文本,复制偏移行
【发布时间】:2019-12-27 18:04:44
【问题描述】:

我编写了一个宏来读取 .csv 文件。它将数据放在 Sheet2 中。

我需要复制从文本字符串“BP 错误”之后的行开始的数据块。此字符串之前的数据长度可能不同,但我感兴趣的数据块是固定大小的。我想将此数据块复制到 Sheet1 中。

我尝试执行一个搜索“BP 错误”的子例程,但我在尝试进行偏移复制时一直卡住。我需要在“BP 错误”字符串之后的接下来的 18 行数据(始终在 B 列中)。

示例:在单元格 B13 中发现“BP 错误”,将单元格 A14:G31 复制到 Sheet1

【问题讨论】:

  • 您应该发布一些您尝试过的代码,以便其他人提供帮助
  • 您是否有超过 1 个这样的事件,或者您只想找到第一个 BP 错误并将以下块复制到工作表一个?
  • 每次运行宏只出现一次。抱歉,应该澄清一下。

标签: excel vba


【解决方案1】:

由于您只需找到第一个“BP 错误”,以下代码将为您完成这项工作(不要忘记更改工作表名称并检查范围以查看它们是否符合您的需要):

Sub DoYourJob()

Dim readingRow As Long

Dim sourceSheet As Worksheet
Dim destinationSheet As Worksheet

Set sourceSheet = ThisWorkbook.Worksheets("YourSourceSheetName")
Set destinationSheet = ThisWorkbook.Worksheets("YourDestinationSheetName")

For readingRow = 1 To sourceSheet.Cells(sourceSheet.Rows.Count, 2).End(xlUp).Row

    If sourceSheet.Cells(readingRow, 2) = "BP Error" Then

        sourceSheet.Range(sourceSheet.Cells(readingRow + 1, 1), sourceSheet.Cells(readingRow + 18, 7)).Copy (destinationSheet.Cells(1, 1))
        Exit For

    End If

Next readingRow

End Sub

【讨论】:

  • 感谢 Abe,对其进行了调整,它似乎工作得很好。我将在一些不同的数据集上进行尝试。非常感谢!
  • 没问题,如果您还有问题,请随时提问。再见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-29
相关资源
最近更新 更多