Функция Left только с использованием массива

Часто бывает так, что нужно применить функцию Left, но аргументов для поиска более 1. На помощь придет данная функция LeftMASS, где:
txt – строка поиска или просто ссылка на ячейку;
rn – массив искомых данных;
startPoz – начальное значение для поиска, по умолчанию 1.

'Функция Left  только с использованием массива
'txt - строка поиска или просто ссылка на ячейку
'rn - массив искомых данных
'startPoz - начальное значение для поиска, по умолчанию 1

Function LeftMASS(txt As String, rn As Range, Optional ByVal startPoz As Integer = 1) As String
kolCells = rn.Cells.Count
For i = 1 To kolCells
  If Left(txt, InStr(startPoz, txt, rn.Cells.Item(i), vbTextCompare))  "" Then
     LeftMASS = Left(txt, InStr(startPoz, txt, rn.Cells.Item(i), vbTextCompare) - 1)
     Exit Function
  End If
Next i
If i = kolCells + 1 And Left(txt, InStr(startPoz, txt, rn.Cells.Item(i), vbTextCompare)) = "" Then LeftMASS = txt
End Function

'два массива, обрезать спереди и сзади
Function LeftMASS(txt As String, rn As Range, Optional ByVal startPoz As Range, Optional ByVal startPoz2 As Range) As String
kolCells = rn.Cells.count
For i = 1 To kolCells
  If Left(txt, InStr(Len(startPoz.Cells.Item(i).Cells.Item(i)), txt, rn.Cells.Item(i), vbTextCompare))  "" Then
     LeftMASS = Mid(Left(txt, InStr(Len(startPoz.Cells.Item(i)), txt, rn.Cells.Item(i), vbTextCompare) - 1), Len(startPoz.Cells.Item(i)), Len(Right(txt, InStr(Len(startPoz.Cells.Item(i)), txt, rn.Cells.Item(i), vbTextCompare) - 1))) & startPoz2.Cells.Item(i)
     Exit Function
  End If
Next i
If i = kolCells + 1 And Left(txt, InStr(Len(startPoz.Cells.Item(i)), txt, rn.Cells.Item(i), vbTextCompare)) = "" Then LeftMASS = txt
End Function

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *