Я пытаюсь перевести следующую формулу в UDF, в основном для облегчения использования людьми.
=IF(LEFT(TRIM(RIGHT(A2,LEN(A2)-LEN(B2)-LEN(C2)-2)),4)="and ",RIGHT(TRIM(RIGHT(A2,LEN(A2)-LEN(B2)-LEN(C2)-2)),LEN(TRIM(RIGHT(A2,LEN(A2)-LEN(B2)-LEN(C2)-2)))-4),TRIM(RIGHT(A2,LEN(A2)-LEN(B2)-LEN(C2)-2)))
Формула - это просто условное средство для удаления текста, но оно необходимо длявидимая процедура.A2 - это список имен, разделенных запятыми или «и», B и C2 - это предыдущие имя и фамилия, которые мы удаляем слева от строки.
Я сделал несколько из них,но это первый, который использует более одной ячейки, и те же методы, которые я использовал ранее, не работают.Я изменил биты, чтобы использовать Application.WorksheetFunction, и изменил ссылки на ячейки на A, B и C.Value2, но, похоже, я не могу заставить его работать.
Public Function NextName(A As Range, B As Range, C As Range)
NextName = _
Application.WorksheetFunction.IF(Left(Trim(Right(A.Value2, _
Application.WorksheetFunction.Len(A.Value2) - Application.WorksheetFunction.Len(B.Value2) - _
Application.WorksheetFunction.Len(C.Value2) - 2)), 4) = "and ", Right(Trim(Right(A.Value2, Application.WorksheetFunction.Len(A.Value2) - _
Application.WorksheetFunction.Len(B.Value2) - Application.WorksheetFunction.Len(C.Value2) - 2)), _
Application.WorksheetFunction.Len(Trim(Right(A.Value2, Application.WorksheetFunction.Len(A.Value2) - _
Application.WorksheetFunction.Len(B.Value2) - Application.WorksheetFunction.Len(C.Value2) - 2))) - 4), Trim(Right(A.Value2, _
Application.WorksheetFunction.Len(A.Value2) - Application.WorksheetFunction.Len(B.Value2) - Application.WorksheetFunction.Len(C.Value2) - 2)))
End Function
[ПРИМЕРЫ]
(A2)
John Smith Rogerson and Jane Laura Manson, Name2 Name2 Name2, Name3 Name3 Name3, Name4 Name4 Name4
(B2)
John Smith Rogerson
(C2)
Rogerson
(результат)
Jane Laura Manson, Name2 Name2 Name2, Name3 Name3 Name3, Name4 Name4 Name4