Excel, remova 0's iniciais do endereço IP

8

Eu tenho uma lista de endereços IP no seguinte formato:

    010.125.015.013
    010.125.153.012
    010.125.012.135

Não consigo executar o ping com esse formulário, pois o Windows acha que é um formulário octal pontilhado. Preciso remover os 0s iniciais após cada ponto.

Não é tão simples como alguns deles não têm zero após os pontos e alguns deles só o têm no último octeto, enquanto outros no terceiro octeto ou em ambos.

A menos que haja uma solução para forçar o ping a interpretar, é um endereço IP decimal pontilhado.

Alguém pode ajudar?

obrigado

Michal
fonte
2
Vamos supor que você deseja preservar um 0 em algo como 123.234.000.276? (Sim, exemplo falso.)
um CVn
deve haver nenhum 0, portanto, no meu exemplo: '010.125.015.013' '010.125.153.012' '010.125.012.135' Eles precisam ser: '10 .125.15.13 ''10 .125.153.12' '10 .125.12.135 'Mas quando é para exemplo: '010.155.105.013' Deve ser: '10 .155.105.13 '
Michal
Você pode fazer isso facilmente com o poder do regex! Use este link para começar. O regex é tão simples como ^0(coincidir com um zero no início da cadeia!)
Dudemanword
2
A remoção de zeros à esquerda altera o IP, pois o zero à esquerda significa números octais.
CodesInChaos
1
@CodesInChaos Em geral, sim. Mas a entrada parece que alguém simplesmente precedeu zeros para tornar cada octeto com três dígitos. Parece improvável que alguém também altere a notação para ser octal durante a execução dessa operação, além de não funcionar para octetos no intervalo de 64 a 99. Suponho que a tarefa é converter IPs de uma notação não padrão com decimal números com zeros à esquerda para uma notação padrão com números decimais sem zeros à esquerda.
kasperd

Respostas:

11

Aqui está o que você pode fazer:

  1. Presumo que cada IP esteja em uma única célula como texto. Agora converta essa célula única em colunas (usando o recurso Texto em colunas) especificando .(ponto) como delimitador. Agora eles devem ser distribuídos como números nas próximas 4 células consecutivas, o zero à esquerda agora deve desaparecer

  2. Use a função Concatenate (consulte a ajuda do Excel para obter detalhes e junte os 4 números incluindo .após cada sequência. Agora você deve ter uma célula com o mesmo IP, excluindo todos os zeros à esquerda.

patkim
fonte
12

A respeito

=INT(MID(A1,1,3)) & "." & 
 INT(MID(A1,5,3)) & "." & 
 INT(MID(A1,9,3)) & "." & 
 INT(MID(A1,13,3))
sgmoore
fonte
6

Este usa SUBSTITUTE:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE("@."&TRIM(C5),".0","."),".0","."),"@.","")

insira a descrição da imagem aqui

Primeiro, apara o espaço em branco ao redor do IP (pol C5), adiciona um prefixo @., substitui .0por .duas vezes e remove o prefixo adicionado @..

g.kov
fonte
Ufa! Eu acho essa resposta tão "lateral" em comparação com as outras até agora :) +1 porque (brincando) você ganha no codegolf (mais a sério) o uso de TRIMpara garantir que não deixe nenhum espaço em branco (... e ainda (codecolfe vencendo até agora! ;-D)
danicotra
3

Vencido no prazo (preciso traduzir as fórmulas do italiano para o inglês ... também só disponho o LibreOffice ...) De qualquer forma, supondo que os endereços IP estejam na coluna A, sugiro o seguinte:

=CONCATENATE(VALUE(MID(A1,1,3)),".",VALUE(MID(A1,5,3)),".",VALUE(MID(A1,9,3)),".",VALUE(MID(A1,13,3)))
danicotra
fonte
@heub: muito obrigado pela apreciação. A versão italiana do Ms-Excel tem quase todos os nomes de fórmulas diferentes ; no entanto, usamos ;não ,como parâmetros fórmulas separador de forma que é preciso para alterá-los - btw na Itália que usar a vírgula (não dot) como o separador para a parte decimal para números. Por último, mas não menos importante, eu uso o Excel no trabalho, mas em casa só tenho o LibreOffice e devo admitir que ele não é tão bem documentado quanto o Excel (eu sempre espero que os nomes das fórmulas permaneçam os mesmos entre os dois) e definitivamente carece de alguns recursos interessantes em relação a ele ...
danicotra
PS: Eu estava esquecendo ... O LibreOffice difere do Excel, mesmo com referências de planilhas / células .no LibreOffice, enquanto no Excel você deve usar !( 'Sheet 1'.A1<=> 'Sheet 1'!A1).
Danicotra