Часто бывает так, что нужно применить функцию 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