Concatenar texto en excel

Apreciables amigos:
Espero que puedan ayudarme en este caso:
En una hoja de datos dispongo nombres de 5 productos en varias filas, de la siguiente forma:
En la celda a2 tengo la palabra "Maíz", en B2 "trigo, C2, D2 y E2 están vacías
A3 y B3 estan vacias, C2 tiene "Frijol", D2 esta vacia y E2 tiene "Garbanzo"
y asi suscecivamente, en algunos casos la primera de cinco celdas puede ser la unica que tenga dato, o pueden ser dos de las cinco celdas (A-E) quienes tengan dato, o tres, etc.
El caso es que necesito concatenar o unir las palabras de las celdas que si las contienen y lo podría hacer con la función CONCATENAR, pero en la celda F debo tener algo así como;
Maíz y Trigo, en el caso de que solo dos celdas tuvieran esas palabras; o bien, si se diera el caso de que fueran tres, las celdas que contuvieran texto, ¿qué la celda F? Me arrojara como resultado Frijol, Trigo y Garbanzo.
Es decir necesito concatenar y poner la "Y" antes de la ultima palabra, pero no lo he logrado hace a como yo quisiera
Ejemplo:
          Celdas: respuesta necesaria (f)
               A B C D E F
1 Maíz Trigo Frijol Cártamo Garbanzo (Maíz, Trigo, Frijol, Cártamo y Garbanzo)
2 Maíz Frijol (Maíz y Frijol)
3 Cártamo Garbanzo (Cártamo y Garbanzo)
4 Frijol Cártamo (Frijol y Cártamo)
5 Trigo Garbanzo (Trigo y Garbanzo)
23
Como pueden ver, si utilizo CONCATENAR no se me daría la respuesta (en F) ya que no podría insertar la "Y" en función del número de palabras.
Espero que puedan ayudarme en este caso.
Como siempre te agradezco de antemano su amable atención y quedo en espera de su respuesta,
Alejandro Gómez Saavedra
Gracias
Saludos
Los Mochis, Sinaloa. México

1 Respuesta

Respuesta
1
Usando funciones de hoja de cálculo supongo que se podría hacer, aunque la fórmula sería bastante larga.
Usando VBA, la función no resulta demasiado complicada:
Public Function Unir(ByVal rng As Range) As String
    Dim rngC As Range
    For Each rngC In rng.Cells
        If rngC.Value <> "" Then Unir = Unir & rngC.Value & ", "
    Next rngC
    Unir = Left(Unir, Len(Unir) - 2)
    If InStrRev(Unir, ", ") > 0 Then
        Unir = Left(Unir, InStrRev(Unir, ", ") - 1) & " y " & Mid(Unir, InStrRev(Unir, ", ") + 2)
    End If
End Function
La sintaxis para la fila 1 (celdas A1:E1) sería:
=Unir(A1:E1)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas