Datos distinto orden en una misma celda

Tengo en una columna agrupaciones de datos separados por ";" del siguiente tipo:

00.35 ; 42.35

35.47; 33.42

45.00 ; 27.85

42.35 ; 00.35

Y así cientos de líneas. Necesito ordenar los datos de cada celda de forma que el orden importe, es decir, que la cuarta línea se convierta en 00.35 ; 42.35 para poder darle el mismo tratamiento a la línea 1 y a la línea 4.

Hay celdas que tengo agrupaciones de hasta siete datos.

2 Respuestas

Respuesta
1

Es una fórmula casi monstruosa, pero allá va:

=espacios(texto(k.esimo.menor(1*extrae(sustituir(sustituir(sustituir(a1;".";",");" ";"");";";"");5*(fila(indirecto("1:"&largo(sustituir(sustituir(sustituir(a1;".";",");" ";"");";";""))/5))-1)+1;5);1);"00,00")&" "&texto(k.esimo.menor(1*extrae(sustituir(sustituir(sustituir(a1;".";",");" ";"");";";"");5*(fila(indirecto("1:"&largo(sustituir(sustituir(sustituir(a1;".";",");" ";"");";";""))/5))-1)+1;5);2);"00,00")&" "&si.error(texto(k.esimo.menor(1*extrae(sustituir(sustituir(sustituir(a1;".";",");" ";"");";";"");5*(fila(indirecto("1:"&largo(sustituir(sustituir(sustituir(a1;".";",");" ";"");";";""))/5))-1)+1;5);3);"00,00");"")&" "&si.error(texto(k.esimo.menor(1*extrae(sustituir(sustituir(sustituir(a1;".";",");" ";"");";";"");5*(fila(indirecto("1:"&largo(sustituir(sustituir(sustituir(a1;".";",");" ";"");";";""))/5))-1)+1;5);4);"00,00");"")&" "&si.error(texto(k.esimo.menor(1*extrae(sustituir(sustituir(sustituir(a1;".";",");" ";"");";";"");5*(fila(indirecto("1:"&largo(sustituir(sustituir(sustituir(a1;".";",");" ";"");";";""))/5))-1)+1;5);5);"00,00");"")&" "&si.error(texto(k.esimo.menor(1*extrae(sustituir(sustituir(sustituir(a1;".";",");" ";"");";";"");5*(fila(indirecto("1:"&largo(sustituir(sustituir(sustituir(a1;".";",");" ";"");";";""))/5))-1)+1;5);6);"00,00");"")&" "&si.error(texto(k.esimo.menor(1*extrae(sustituir(sustituir(sustituir(a1;".";",");" ";"");";";"");5*(fila(indirecto("1:"&largo(sustituir(sustituir(sustituir(a1;".";",");" ";"");";";""))/5))-1)+1;5);7);"00,00");""))

A tener en cuenta que:

1) Se trata de una fórmula matricial, por lo que ha de ser introducida pulsando mayúsculas control entrada al mismo tiempo.

2) Sólo funcionará a partir de Excel 2007, y me temo que los puntos los convertirá en comas.

Hola:

Muchísimas gracias por tu tiempo.

He probado a copiar y pegar la fórmula y me da error. Supongo que no se puede hacer así y hay que introducirla manualmente.

No sé que son fórmulas matriciales, me queda mucho por aprender ;)

¿Introdujiste la fórmula pulsando mayúsculas control entrada al mismo tiempo?

Hola:

Tienes toda la razón, la estaba introduciendo mal.

Tal y como me habías advertido, transforma los puntos en comas.

Gracias y un saludo!

Respuesta
1

H o l a:

Te anexo una macro. Cambia en la macro la columna origen donde tienes tus datos y la columna origen donde quieres el resultado, ambas columnas puede ser la misma.

Dim valores As New Collection
Sub OrdenarEnCeldas()
'Por.Dante Amor
    col1 = "A"  'Columna origen
    col2 = "B"  'Columna destino
    '
    Set valores = Nothing
    For i = 2 To Range(col1 & Rows.Count).End(xlUp).Row
        nums = Split(Cells(i, col1), ";")
        For j = LBound(nums) To UBound(nums)
            agregar Trim(nums(j))
        Next
        '
        cad = ""
        For Each d In valores
            cad = cad & d & " ; "
        Next
        cad = Left(cad, Len(cad) - 2)
        Cells(i, col2) = cad
        Set valores = Nothing
    Next
    Set valores = Nothing
    MsgBox "Ordenar los datos en las celdas terminado", vbInformation, "ORDENAR EN CELDAS"
End Sub
'
Sub agregar(dato)
'Por.Dante Amor
    For i = 1 To valores.Count
        Select Case StrComp(valores(i), dato, vbTextCompare)
            Case 0, 1: valores.Add dato, Before:=i: Exit Sub
        End Select
    Next
    valores.Add dato
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: OrdenarEnCeldas
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

Hola

Muchísimas gracias!

Es la primera vez que "hago" una macro y con tus indicaciones ha sido muy sencillo.

De nuevo, gracias :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas