Vale, como no se como lo quieres ejecutar, te lo hice a modo de función, ya que siempre son 3 frutas, te hice 3 funciones.
En este video puedes ver como funcionan: video demo
Colocas la fórmula en las celdas que tu quieras, en este caso en B5, B15 y H12
Lo bueno de esta forma es que luego la puedes usar donde quieras, y el texto original también puede estar donde quieras, no solo en B2.
Estos son los 3 códigos, pega todo esto en un modulo:
Function Fruta1(Rng As Range) As String
Application.ScreenUpdating = False
If IsEmpty(Rng) Then Fruta1 = "": Exit Function
Dim cCol As Byte
Dim i As Byte
Dim rCell As Range
Dim TempStr() As String
TempStr = Split(Rng.Value, "/")
If InStr(TempStr(0), ";") > 0 Then
TempStr(0) = Right(TempStr(0), Len(TempStr(0)) - InStr(TempStr(0), ";"))
End If
If InStr(TempStr(UBound(TempStr)), ";") > 0 Then
TempStr(UBound(TempStr)) = Left(TempStr(UBound(TempStr)), InStr(TempStr(UBound(TempStr)), ";") - 1)
End If
If UBound(TempStr) >= 0 Then
Fruta1 = Trim(TempStr(0))
Else
Fruta1 = ""
End If
Application.ScreenUpdating = True
End Function
Function Fruta2(Rng As Range) As String
Application.ScreenUpdating = False
If IsEmpty(Rng) Then Fruta2 = "": Exit Function
Dim cCol As Byte
Dim i As Byte
Dim rCell As Range
Dim TempStr() As String
TempStr = Split(Rng.Value, "/")
If InStr(TempStr(0), ";") > 0 Then
TempStr(0) = Right(TempStr(0), Len(TempStr(0)) - InStr(TempStr(0), ";"))
End If
If InStr(TempStr(UBound(TempStr)), ";") > 0 Then
TempStr(UBound(TempStr)) = Left(TempStr(UBound(TempStr)), InStr(TempStr(UBound(TempStr)), ";") - 1)
End If
If UBound(TempStr) >= 1 Then
Fruta2 = Trim(TempStr(1))
Else
Fruta2 = ""
End If
Application.ScreenUpdating = True
End Function
Function Fruta3(Rng As Range) As String
Application.ScreenUpdating = False
If IsEmpty(Rng) Then Fruta3 = "": Exit Function
Dim cCol As Byte
Dim i As Byte
Dim rCell As Range
Dim TempStr() As String
TempStr = Split(Rng.Value, "/")
If InStr(TempStr(0), ";") > 0 Then
TempStr(0) = Right(TempStr(0), Len(TempStr(0)) - InStr(TempStr(0), ";"))
End If
If InStr(TempStr(UBound(TempStr)), ";") > 0 Then
TempStr(UBound(TempStr)) = Left(TempStr(UBound(TempStr)), InStr(TempStr(UBound(TempStr)), ";") - 1)
End If
If UBound(TempStr) >= 2 Then
Fruta3 = Trim(TempStr(2))
Else
Fruta3 = ""
End If
Application.ScreenUpdating = True
End Function
Andy