Chuck tiene una hoja de trabajo que, en una columna, contiene una serie de direcciones IP. Están en el formato familiar de 192.168.2.1. Si ordena las direcciones, no se ordenan numéricamente. Por ejemplo, Excel coloca 192.168.1.100 entre 192.168.1.1 y 192.168.1.2. Chuck se pregunta si hay alguna forma de ordenar una columna de direcciones IP para que aparezcan en la secuencia adecuada.

Esto sucede porque Excel ve una dirección IP como texto, no como un número o una serie de números. Hay algunas formas de solucionar el problema, algunas de las cuales analizaré en este consejo. Debe elegir el enfoque que sea adecuado para sus necesidades, según lo definido por sus datos y cómo usa esos datos.

Un enfoque es asegurarse de que cada octeto de sus direcciones IP consta de tres dígitos. (Un octeto es cada parte de la dirección IP, separada por puntos). Por ejemplo, en lugar de una dirección como 192.168.1.1, usaría 192.168.001.001. Esto «rellena» cada octeto con ceros y, si todas sus direcciones IP están en este formato, se ordenarán correctamente.

Si prefiere utilizar una fórmula para garantizar el relleno frontal de cada octeto, puede utilizar lo siguiente:

=TEXT(LEFT(A1,FIND(".",A1,1)-1),"000") & "." & TEXT(MID(A1,FIND( ".",A1,1)+1,FIND(".",A1,FIND(".",A1,1)+1)-FIND(".",A1,1)-1),"000")

& "." & TEXT(MID(A1,FIND(".",A1,FIND(".",A1,1)+1)+1,FIND(".",A1, FIND(".",A1,FIND(".",A1,1)+1)+1)-FIND(".",A1,FIND(".",A1,1)+1)-1), "000") & "." & TEXT(RIGHT(A1,LEN(A1)-FIND(".",A1,FIND(".",A1,FIND( ".",A1,1)+1)+1)),"000")

Esta fórmula es bastante larga, pero sigue siendo una fórmula única. Colóquelo en la columna junto a sus primeras direcciones IP (asumiendo que la dirección está en la celda A1) y luego cópielo tantas filas como sea necesario. Cuando haga su clasificación, ordene por la columna B, y las direcciones estarán en la secuencia correcta.

Si trabaja con muchas direcciones IP, es posible que desee crear una función definida por el usuario que rellene cada octeto de la dirección IP con ceros y luego devuelva una IP completamente formateada. Lo siguiente realizará la tarea:

Function FormatIP(IPAddr As String) As String     Dim Dot1 As Integer     Dim Dot2 As Integer     Dim Dot3 As Integer     Dim Octet1 As String     Dim Octet2 As String     Dim Octet3 As String     Dim Octet4 As String

Dot1 = InStr(1, IPAddr, ".", vbTextCompare)

Dot2 = InStr(Dot1 + 1, IPAddr, ".", vbTextCompare)

Dot3 = InStr(Dot2 + 1, IPAddr, ".", vbTextCompare)



Octet1 = Left(IPAddr, Dot1-1)

Octet2 = Mid(IPAddr, Dot1+1, Dot2-Dot1-1)

Octet3 = Mid(IPAddr, Dot2+1, Dot3-Dot2-1)

Octet4 = Mid(IPAddr, Dot3+1, Len(IPAddr))



FormatIP = Right("000" & Octet1, 3) & "."

FormatIP = FormatIP & Right("000" & Octet2, 3) & "."

FormatIP = FormatIP & Right("000" & Octet3, 3) & "."

FormatIP = FormatIP & Right("000" & Octet4, 3)

End Function

En Excel, entonces, podría usar la UDF de esta manera, asumiendo su dirección IP original en la celda A1:

=FormatIP(A1)

Otro enfoque es simplemente dividir las direcciones IP en columnas separadas, colocando cada octeto en su propia columna. Esto es fácil de hacer si usa la herramienta Texto a columnas, de esta manera:

  1. Asegúrese de que haya tres columnas en blanco a la derecha de sus direcciones IP.

  2. Seleccione el rango de celdas que contienen las direcciones IP.

  3. Muestre la pestaña Datos de la cinta.

  4. Haga clic en la herramienta Texto a columnas, en el grupo Herramientas de datos. Excel inicia el Asistente para convertir texto en columnas. (Ver figura 1)

  5. Elija el botón de opción Delimitado.

  6. Haga clic en Siguiente.

  7. Seleccione la casilla de verificación junto a Otro y, a la derecha de la casilla de verificación, ingrese un punto.

  8. Haga clic en Finalizar.

Una vez hecho esto, puede ordenar las cuatro columnas como lo haría normalmente con los números. Luego, cuando desee volver a unir las direcciones IP, puede usar una fórmula como esta:

=A1 & "." & B1 & "." & C1 & "." & D1

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (13481) se aplica a Microsoft Excel 2007, 2010, 2013 y 2016.