Saltar al contenido

Separe los octetos de la dirección IP usando fórmulas

Contamos con el resultado a esta contrariedad, al menos eso deseamos. Si sigues con alguna pregunta dínoslo, que sin dudarlo te ayudaremos

Solución:

Aquí está la solución clásica de una fórmula:

=TRIM(MID(SUBSTITUTE(A$1,".",REPT(" ",999)),(ROW()-1)*999-998,999))

ingrese la descripción de la imagen aquí

"." – es el delimitador.
(ROW()-1) – proporciona el elemento n en el texto delimitado.

Más información en EXCELFOX

Aquí hay cuatro fórmulas que necesita

A2:=LEFT(A1,FIND(".",A1)-1)
A3:=MID(A1,FIND(".",A1)+1,FIND(".",A1,FIND(".",A1)+1)-FIND(".",A1)-1)
A4:=MID(A1,FIND(".",A1,FIND(".",A1)+1)+1,FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)-(FIND(".",A1,FIND(".",A1)+1)+1))
A5:=MID(A1,FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)+1,LEN(A1)-FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1))

La función ENCONTRAR tiene un tercer argumento llamado comienzo. Entonces, para encontrar el segundo punto decimal, ENCUENTRAS un punto decimal pero comienzas donde el primer punto decimal es más uno. seria asi

=FIND(".",A1,4)

Empiezas en 4 porque tu primer punto decimal está en la posición 3. Pero no lo sabes, así que tienes que calcular el ‘4’.

=FIND(".",A1,FIND(".",A1)+1)

Ahora, para obtener 4, buscamos el primer decimal y sumamos 1. Eso no es tan malo para encontrar el segundo. Pero para encontrar el tercero, tienes que ir a otro nivel. Y el cuarto es otro nivel. Es difícil de leer y difícil de mantener.

Para hacerlo un poco más fácil, puede usar columnas auxiliares.

A2        =LEFT(A1,C2-1)
C2        =FIND(".",A1)
A3        =MID(A1,C2+1,C3-C2-1)
C3        =FIND(".",A1,C2+1)
A4        =MID(A1,C3+1,C4-C3-1)
C4        =FIND(".",A1,C3+1)
A5        =MID(A1,C4+1,LEN(A1)-C4-1)

De esa manera, está haciendo sus FIND en C y refiriéndose a esos números en A.

Si no le gustan las columnas auxiliares, y a mí tampoco, podría escribir un UDF como

Public Function FINDi(find_text As String, within_text As String, Optional instance As Long) As Long

    Dim lReturn As Long
    Dim i As Long

    Const lFINDFIRST As Long = 0

    If instance = lFINDFIRST Then
        lReturn = InStr(1, within_text, find_text)
    ElseIf instance < lFINDFIRST Then 'negative numbers finds last
        lReturn = InStrRev(within_text, find_text)
    Else
        lReturn = 0
        For i = 1 To instance
            lReturn = InStr(lReturn + 1, within_text, find_text)
        Next i
    End If

    FINDi = lReturn

End Function

y eso te da fórmulas como esta

A2        =LEFT(A1,findi(".",A1)-1)
A3        =MID(A1,findi(".",A1)+1,findi(".",A1,2)-findi(".",A1,1)-1)
A4        =MID(A1,findi(".",A1,2)+1,findi(".",A1,3)-findi(".",A1,2)-1)
A5        =MID(A1,findi(".",A1,3)+1,LEN(A1)-findi(".",A1,3)-1)

No tan limpio como la columna de ayuda, pero autónomo y definitivamente mejor que el FIND incorporado.

Otro UDF que podría escribir duplica lo que hace la función de división de VBA.

Public Function SplitString(ByVal sInput As String, ByVal sDelim As String, ByVal lWhich As Long) As String

    SplitString = Split(sInput, sDelim)(lWhich - 1)

End Function

Esa fórmula parece

A2        =SplitString($A$1,".",ROW()-1)
A3        =SplitString($A$1,".",ROW()-1)
A4        =SplitString($A$1,".",ROW()-1)
A5        =SplitString($A$1,".",ROW()-1)

Aquí tienes las reseñas y calificaciones

Más adelante puedes encontrar las notas de otros programadores, tú de igual manera tienes la habilidad mostrar el tuyo si te apetece.

¡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 *