Atualmente, estou trabalhando com uma grande lista de endereços IP (milhares deles).
No entanto, quando ordeno a coluna que contém os endereços IP, eles não são classificados de maneira intuitiva ou fácil de seguir.
Por exemplo, se eu inserir endereços IP da seguinte maneira:
E então, se eu classificar em ordem crescente, recebo o seguinte:
Existe uma maneira de eu formatar as células para que, por exemplo, um endereço IP 17.255.253.65 apareça após 1.128.96.254 e antes de 103.236.162.56 quando classificados em ordem crescente?
Se não, existe outra maneira de alcançar esse objetivo final?
microsoft-excel
ip-address
sorting
Monomeeth
fonte
fonte
Respostas:
Como você deve ter percebido, seus endereços IP são tratados como texto e não como números. Eles estão sendo classificados como texto, o que significa que os endereços que começam com "162" virão antes dos endereços que começam com "20". (porque o caractere "1" vem antes do caractere "2".
Você pode usar a fórmula fornecida nesta resposta: https://stackoverflow.com/a/31615838/4424957 para dividir o endereço IP em suas partes.
Se seus endereços IP estiverem nas colunas A, adicione as colunas BE conforme mostrado abaixo.
Digite a fórmula
na célula B2 e copie-o para as colunas BE em todas as linhas para obter as quatro partes de cada endereço IP. Agora, classifique todo o intervalo pelas colunas B a E (nessa ordem), como mostrado abaixo:
Se você não quiser ver as colunas auxiliares (BE), poderá ocultá-las.
fonte
first*256^3+second*256^2+third*256+fourth
em uma coluna?A solução mais fácil, em 3 etapas, posso sugerir que você é ,,,
Selecione a coluna Endereço IP, aplique o comando Texto à coluna .
Na coluna adjacente escreva esta fórmula
= CONCATENAR (B3, ".", C3, ".", D3, ".", E3)
Finalmente, classifique em ordem crescente.
Verifique a captura de tela.
NB:
Vermelho é o endereço IP original (na coluna A).
Verde depois de aplicar o texto à coluna (coluna B a E).
PretoDepois de concatenar e classificar (coluna F).
O motivo é muito simples: o endereço IP original é Dados de Texto e o Excel não aceita nenhum Formato de Célula para transformá-lo em Número.
Espero que isso ajude você.
fonte
Text To Column
colunas lá. @ MaxW, o layout é apenas para demonstração. Se você deseja que o IP original seja classificado, ignore a etapa 2. Essa fórmula "VALUE (TRIM (MID (SUBSTITUTE") na resposta aceita deve ser substituída por 'Text To Columns' e o restante da resposta é essencialmente o mesmo.Aqui está uma função VBA que escrevi há algum tempo para resolver o mesmo problema. Ele gera uma versão acolchoada de um endereço IPv4 que classifica corretamente.
Exemplo simples:
Resultado
Fórmulas
Você pode classificar pela coluna 'Classificável' e ocultá-la.
fonte
Aqui está uma resposta que terá apenas 1 coluna da sua tabela e converterá o endereço IPv4 na numeração da base 10.
Como você está colocando seus dados na coluna "M", isso começa na célula M2 (M1 é o rótulo). Encapsulá-lo como código gera uma bagunça terrível, então usei a citação em bloco:
Não é exatamente a fórmula mais fácil de ler, mas você pode simplesmente copiar e colar no seu celular (de preferência N2 ou outra coisa na mesma linha do seu primeiro endereço IP). Ele pressupõe a formatação adequada do endereço IP, pois a correção de erros na fórmula tornaria ainda pior a análise humana.
fonte
Se você não quiser usar fórmulas ou VBA, use o Power Query. (No Excel 2016, Get & Transform, no Excel 2010 ou 2013, instale o suplemento PowerQuery para acompanhar).
fonte
O é um liner semelhante que transforma os octetos em campos de 3 dígitos que permitem a classificação correta.
10.1.0.15
torna-se10001000015
.fonte
Ao obter os pontos positivos da resposta de todos, aqui está a minha solução. Apenas uma coluna auxiliar é necessária. Tentamos formatar os endereços IPv4 em
012.198.043.009
formato e depois os classificamos:12.198.43.9
para12 198 43 9
, então para012.198.043.009
Formate endereços IPv4 no
012.198.043.009
formato inserindo N2 e preencha para baixo:Classificar pela coluna N
Explicação
Ao
SUBSTITUTE
inserir o ponto.
com 6 espaços , obtemos o seguinte, para que possam ser extraídos corretamente:E então, extraia e formate cada parte com
TEXT(..., "000")
.fonte
Se você estiver usando uma versão recente do Excel no Windows, poderá usar a seguinte fórmula para calcular o valor decimal de 32 bits do endereço IP.
Você pode classificar usando o valor decimal derivado. Substitua
[@ipbase]
pela localização da célula de um endereço IP4 válido.A função "FILTERXML" funciona apenas no Windows, então você não terá sorte se estiver usando outro sistema operacional.
fonte
Eu também tenho um one-liner que fornecerá um IP de formato acolchoado (000.000.000.000) para a classificação alfa.
fonte