2015-05-21 4 views
1

У меня есть файл .csv, в котором я написал макрос для чтения. Он помещает данные в Sheet2.Excel VBA: поиск строк смещения текста

Мне нужно скопировать блок данных, который начинается в строке, следующей за текстовой строкой «BP Error». Данные, предшествующие этой строке, могут различаться по длине, но интересующий меня блок данных имеет фиксированный размер. Я хотел бы скопировать этот блок данных обратно в Sheet1 моей книги.

Я пробовал выполнить подпрограмму, которая будет искать «BP Error», но я продолжал застревать, пытаясь сделать смещение копирования. Мне нужны следующие 18 строк данных, следующих за строкой «BP Error» (которая всегда находится в столбце B, кстати).

Пример: BP Error находится в ячейке B13, мне нужно скопировать клетки A14:G31 в Sheet1

Любые предложения?

+0

Вы должны опубликовать код, который вы пробовали, чтобы другие помогли – warunapww

+0

У вас есть более одного события, подобного этому, или вы хотите найти только первую ошибку BP и скопировать следующий блок на один лист? – Abe

+0

Только одно вхождение за ход макроса. Извините, должен был уточнить. –

ответ

2

Поскольку вы должны найти только первый «BP Error», следующий код будет делать работу за вас (Не забудьте изменить имена листов и проверьте диапазоны, чтобы увидеть, если они соответствуют вашим потребностям):

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 
+0

Спасибо, Эйб, изменил его, и он, казалось, работал отлично. Я попробую его на нескольких разных наборах данных. Весьма признателен! –

+0

Нет проблем, если у вас остались вопросы, не стесняйтесь спрашивать. Увидимся. – Abe

Смежные вопросы