Actualmente estoy trabajando con una gran lista de direcciones IP (miles de ellas).
Sin embargo, cuando clasifico la columna que contiene las direcciones IP, no se clasifican de manera intuitiva o fácil de seguir.
Por ejemplo, si ingreso las direcciones IP de la siguiente manera:
Y luego, si ordeno en orden ascendente, obtengo esto:
¿Hay alguna forma de formatear las celdas para que, por ejemplo, una dirección IP de 17.255.253.65 aparezca después de 1.128.96.254 y antes de 103.236.162.56 cuando se ordena en orden ascendente?
Si no es así, ¿hay otra forma de lograr este objetivo final?
microsoft-excel
ip-address
sorting
Monomeeth
fuente
fuente
Respuestas:
Como te habrás dado cuenta, tus 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 comienzan con "20." (porque el carácter "1" viene antes del carácter "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 fórmula
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:
Si no desea ver las columnas auxiliares (BE), puede ocultarlas.
fuente
first*256^3+second*256^2+third*256+fourth
en una columna?La solución más fácil de 3 pasos que te puedo sugerir es ...
Seleccione la columna de dirección IP, aplique el comando Texto a columna .
En la columna adyacente, escriba esta fórmula
= CONCATENAR (B3, ".", C3, ".", D3, ".", E3)
Finalmente ordenar en orden ascendente.
Verifique la captura de pantalla.
NÓTESE BIEN:
El rojo es la dirección IP original (en la columna A).
Verde después de aplicar texto a la columna (columna B a E).
El negro se aplica después de concatenar y ordenar (columna F).
La razón por la que la dirección IP original es muy simple son los datos de texto y Excel no acepta ningún formato de celda para convertirlo en número.
Espero que esto te ayude.
fuente
Text To Column
columnas allí. @MaxW, el diseño es solo para demostración. Si desea que se ordene la IP original, simplemente ignore el paso 2. Esa fórmula masiva "VALOR (TRIM (MID (SUBSTITUTE") en la respuesta aceptada debe reemplazarse por "Texto a columnas" y el resto de la respuesta es esencialmente la misma.Aquí hay una función de VBA que escribí hace algún tiempo para resolver el mismo problema. Genera una versión acolchada de una dirección IPv4 que se ordena correctamente.
Ejemplo simple:
Resultado
Fórmulas
Puede ordenar por la columna 'Ordenar' y ocultarlo.
fuente
Aquí hay una respuesta que tomará solo 1 columna de su tabla y convertirá la dirección IPv4 a numeración de base 10.
Como está poniendo sus datos en la columna "M", esto comienza en la celda M2 (M1 es la etiqueta). Encapsularlo como código da un desastre terrible, así que he usado blockquote:
No es exactamente la fórmula más fácil de leer, pero puede copiar y pegar en su celda (preferiblemente N2 u otra cosa en la misma fila que su primera dirección IP). Presume que el formato correcto de la dirección IP como corrección de errores en la fórmula lo haría aún peor para el análisis humano.
fuente
Si no desea usar fórmulas o VBA, use Power Query. (En Excel 2016, Get & Transform, en Excel 2010 o 2013, instale el complemento PowerQuery para seguir).
fuente
El es un delineador similar que transforma los octetos en campos de 3 dígitos que permiten una clasificación adecuada.
10.1.0.15
se convierte10001000015
.fuente
Al obtener los buenos puntos de la respuesta de todos, aquí está mi solución. Solo se necesita 1 columna auxiliar. Intentamos formatear las direcciones IPv4 en
012.198.043.009
formato y luego ordenarlas:12.198.43.9
a12 198 43 9
, luego a012.198.043.009
Formatee las direcciones IPv4 en
012.198.043.009
formato ingresando N2 y llene hacia abajo:Ordenar por columna N
Explicación
Al poner
SUBSTITUTE
el punto.
con 6 espacios , obtenemos lo siguiente, para que puedan extraerse correctamente:Y luego, extraiga y formatee cada parte por
TEXT(..., "000")
.fuente
Si está utilizando una versión reciente de Excel en Windows, puede usar la siguiente fórmula para calcular el valor decimal de 32 bits de la dirección IP.
Luego puede ordenar utilizando el valor decimal derivado. Sustituya
[@ipbase]
con la ubicación de la celda de una dirección IP4 válida.La función "FILTERXML" solo funciona en Windows, por lo que no tiene suerte si está utilizando otro sistema operativo.
fuente
También tengo una línea que le dará un formato IP rellenado (000,000,000,000) para la clasificación alfa.
fuente