double arrow

Шаг 71 - Нефть, таблицы и как делать не надо, продолжение

2

Итак, теперь нам нужно в соответствии с номером скважины делать выборку. Заведен еще один массив.

Dim allbore As Range ' здесь будет храниться диапазон скважин

Dim alldata As Collection ' это набор элементов

Dim borename As New Collection ' это набор скважи

Напишем функцию которая будет заполнять коллекцию по именам скважины:

Sub SelectBore(s As String)

Set alldata = New Collection

For Each bore In allbore ' бежим по диапазону скважин

bore.Select ' выделяем ячейку

If bore.Value = s Then ' если это та скважина

ActiveCell.Offset(0, 1).Select ' вправо

alldata.Add (ActiveCell.Value) ' поместить в коллекцию

End If

Next bore

End Sub

Пробежим по всем скважинам и возмем значение из правой колонки поместив его а массив.

Sub FindOil()

Set allbore = Range("A:A") ' выбрать колонку

' только с данными

Set allbore = Range(allbore.Columns.End(xlUp).Address, allbore.Columns.End(xlDown).Address)

allbore.Select ' выделить

For Each bore In allbore ' бежим по диапазону скважин

bore.Select ' выделяем ячейку

If FindElement(bore.Value) = True Then ' если кважины нет в коллекции

borename.Add (bore.Value) ' добавить к коллекцию

End If

Next bore

For Each elem In borename

SelectBore (elem)

Debug.Print (elem)

For Each data In alldata ' пробежим по результату для того что бы

' показать что массив заполнен

Debug.Print (data)

Next data

Next elem

End Sub

В окне отладки можно увидеть, что массив заполнен значениями соответствующими скважинам на данный момент.

Ну, а теперь можно исследовать этот массив на пример решения какая скважина. Вообщем то на самом деле я просто повторил работу БД. Сделал выборку. Давайте попробуем сделать простой выводы. Например если упоминается нефть но она нефтенасышенная иначе пусто.

Sub FindOil()

.....................

For Each elem In borename

SelectBore (elem)

Debug.Print (elem)

For Each data In alldata ' пробежим по результату для того что бы

' показать что массив заполнен

'Debug.Print (data)

If data = "Нефть" Then

MsgBox "Oil !!!!!! " + elem

Exit For

End If

Next data

Next elem

End Sub

При работе этой функции будет два окна для скважины с нефтью.

2

Сейчас читают про: