Saltar al contenido

¿Cómo obtengo celdas en Excel que contienen direcciones IP para ordenar correctamente?

Esta es la contestación más correcta que te podemos aportar, sin embargo estúdiala pausadamente y valora si es compatible a tu proyecto.

Solución:

Como se habrá dado cuenta, sus direcciones IP se tratan como texto y no como números. Se ordenan como texto, lo que significa que las direcciones que comienzan con “162” aparecerán antes que las direcciones que comiencen con “20”. (porque el caracter “1” viene antes que el caracter “2”.

Puede usar la fórmula provista en esta respuesta: https://stackoverflow.com/a/31615838/4424957 para dividir la dirección IP en sus partes.

Si sus direcciones IP están en las columnas A, agregue las columnas BE como se muestra a continuación.

ingrese la descripción de la imagen aquí

Introduce la fórmula

=VALUE(TRIM(MID(SUBSTITUTE($A2,".",REPT(" ",999)),(B$1)*999-998,999)))

en la celda B2 y cópielo en las columnas BE en todas las filas para obtener las cuatro partes de cada dirección IP. Ahora ordene todo el rango por las columnas B a E (en ese orden) como se muestra a continuación:

ingrese la descripción de la imagen aquí

Si no desea ver las columnas auxiliares (BE), puede ocultarlas.

La solución de 3 pasos más fácil que puedo sugerirle es…

  1. Seleccione la columna de dirección IP, aplique Texto a columna mando.

  2. En la columna adyacente escriba esta fórmula

    =CONCATENAR(B3,”.”,C3,”.”,D3,”.”,E3)

  3. Finalmente ordenar en orden ascendente.

Compruebe la captura de pantalla.

ingrese la descripción de la imagen aquí

NÓTESE BIEN:

rojo es la dirección IP original (en la columna A).

Verde después de aplicar Texto a la columna (Columna B a E).

Negro es Después de aplicar Concatenar y Ordenar (Columna F).

La razón es muy simple, originalmente la dirección IP es Datos de texto y Excel no acepta ningún Formato de celda para convertirlo en Número.

Espero que esto te ayude.

Aquí hay una función de VBA que escribí hace algún tiempo para resolver el mismo problema. Genera una versión rellenada de una dirección IPv4 que se ordena correctamente.

Function SortAddress(Address As String)                     '   format address as XXX.XXX.XXX.XXX to permit sorting

Dim FirstByte As Integer, LastByte As Integer, I As Integer

SortAddress = ""
FirstByte = 1

For I = 0 To 2                                          '   process the first three bytes

    LastByte = InStr(FirstByte, Address, ".")           '   find the dot
                                                        '   append the byte as 3 digits followed by dot
    SortAddress = SortAddress & Format(Mid(Address, FirstByte, LastByte - FirstByte), "000.")

    FirstByte = LastByte + 1                            '   shift the start pointer

Next I

SortAddress = SortAddress & Format(Mid(Address, FirstByte), "000") ' process the last byte

End Function

Ejemplo sencillo:

Resultado

Resultado

fórmulas

fórmulas

Puede ordenar por la columna ‘Ordenable’ y ocultarla.

Si te gusta este mundo, puedes dejar una sección acerca de qué le añadirías a este escrito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *