Найти в Дзене
Мой помощник: Excel

Поиск начала и окончания блока значений

Зачастую в документе, на листе Excel, требуется найти начало и окончание блока табличной части документа.

Рис. Документ с табличной частью. Блок данных определен строками "01_" и "Итого:"
Рис. Документ с табличной частью. Блок данных определен строками "01_" и "Итого:"

Это можно сделать так:

Sub test()

Dim et As String

et = ""

et = FindCellIs01_(ActiveSheet, "01_", False)

If et = "" Then

nRIn = "не найден"

Else

nRIn = Range(et).Row

End If

et = ""

et = FindCellIs01_(ActiveSheet, "Итого:", False)

If et = "" Then

nROu = "не найден"

Else

nROu = Range(et).Row

End If

MsgBox "- начала блока = " & nRIn & Chr(10) & "- окончания блока = " & nROu, vbInformation + vbOKOnly, "номер строки:"

End Sub

Function FindCellIs01_(ByVal wsFind As Worksheet, paramFind As String, ySNo As Boolean)

'Поиск ячейки с paramFind и нахождение крайней занятой колонки в строке с ней:

With wsFind

Set h = .Range(.Cells(1, 1), .Cells(.UsedRange.Row + .UsedRange.Rows.Count - 1, .UsedRange.Column + .UsedRange.Columns.Count - 1)).Find(What:=paramFind)

End With

If ySNo = True Then

With wsFind

lCol = .Cells(h.Row, Columns.Count).End(xlToLeft).Column

End With

End If

If Not h Is Nothing Then

If ySNo = True Then

'сообщаем

MsgBox "Параметр " & Chr(34) & paramFind & Chr(34) & " находится в ячейке: " & h.Address & Chr(10) & _

"крайняя, занятая колонка, в строке с параметром = " & lCol, vbInformation + vbOKOnly, "Ура !!!"

End If

'возвращаем

FindCellIs01_ = h.Address

Else

If ySNo = True Then

'сообщаем

MsgBox "Параметр " & Chr(34) & paramFind & Chr(34) & Chr(10) & _

"НЕ НАЙДЕН!", vbCritical + vbOKOnly, "Караул!!!"

End If

'возвращаем

FindCellIs01_ = ""

End If

End Function