Obecnie pracuję z dużą listą adresów IP (tysiące z nich).
Jednak gdy sortuję kolumnę zawierającą adresy IP, nie sortują one w sposób intuicyjny lub łatwy do naśladowania.
Na przykład, jeśli wprowadzę adresy IP w następujący sposób:
A potem, jeśli sortuję rosnąco, otrzymuję:
Czy istnieje sposób na sformatowanie komórek, aby na przykład adres IP 17.255.253.65 pojawił się po 1.128.96.254 i przed 103.236.162.56 po posortowaniu w porządku rosnącym?
Jeśli nie, czy jest inny sposób na osiągnięcie tego ostatecznego celu?
microsoft-excel
ip-address
sorting
Monomeeth
źródło
źródło
Odpowiedzi:
Jak być może zauważyłeś, twoje adresy IP są traktowane jak tekst, a nie liczby. Są one sortowane jako tekst, co oznacza, że adresy zaczynające się od „162” pojawią się przed adresami rozpoczynającymi się od „20”. (ponieważ znak „1” występuje przed znakiem „2”.
Możesz użyć wzoru podanego w tej odpowiedzi: https://stackoverflow.com/a/31615838/4424957, aby podzielić adres IP na jego części.
Jeśli twoje adresy IP znajdują się w kolumnach A, dodaj kolumny BE, jak pokazano poniżej.
Wprowadź formułę
w komórce B2 i skopiuj go do kolumn BE we wszystkich wierszach, aby uzyskać cztery części każdego adresu IP. Teraz posortuj cały zakres według kolumn od B do E (w tej kolejności), jak pokazano poniżej:
Jeśli nie chcesz widzieć kolumn pomocniczych (BE), możesz je ukryć.
źródło
first*256^3+second*256^2+third*256+fourth
w jednej kolumnie?Najłatwiejsze, 3 kroki Rozwiązanie, które mogę zasugerować, ,,,
Wybierz kolumnę adresu IP, zastosuj polecenie Tekst do kolumny .
W sąsiedniej kolumnie napisz tę formułę
= CONCATENATE (B3, „.”, C3, „.”, D3, „.”, E3)
Wreszcie sortuj w porządku rosnącym.
Sprawdź zrzut ekranu.
NB:
Czerwony to oryginalny adres IP (w kolumnie A).
Zielony po zastosowaniu tekstu w kolumnie (kolumna B do E).
Czarny jest po zastosowaniu konkatenatu i sortowania (kolumna F).
Powód jest bardzo prosty, pierwotnie adres IP to Dane tekstowe, a Excel nie akceptuje żadnego formatu komórki, aby zmienić go na Liczba.
Mam nadzieję, że ci to pomoże.
źródło
Text To Column
kolumn tam. @ MaxW, układ służy tylko do demonstracji. Jeśli chcesz posortować oryginalny adres IP, po prostu zignoruj krok 2. Ta masywna „WARTOŚĆ (TRIM (MID (SUBSTITUTE”) w przyjętej odpowiedzi powinna zostać zastąpiona przez „Tekst do kolumn”), a reszta odpowiedzi jest zasadniczo taka sama.Oto funkcja VBA, którą napisałem jakiś czas temu, aby rozwiązać ten sam problem. Generuje wyściełaną wersję adresu IPv4, która sortuje się poprawnie.
Prosty przykład:
Wynik
Formuły
Możesz sortować według kolumny „Sortable” i ukryć ją.
źródło
Oto odpowiedź, która zajmie tylko 1 kolumnę tabeli i konwertuje adres IPv4 na numerację podstawową 10.
Ponieważ umieszczasz swoje dane w kolumnie „M”, zaczyna się to w komórce M2 (M1 jest etykietą). Hermetyzowanie go jako kodu powoduje jeden straszny bałagan, więc użyłem cytatu:
Nie jest to najłatwiejsza do odczytania formuła, ale możesz po prostu skopiować i wkleić do komórki (najlepiej N2 lub coś innego w tym samym rzędzie, co pierwszy adres IP). Zakłada prawidłowe formatowanie adresu IP, ponieważ korekta błędu w formule pogorszyłaby to nawet w przypadku analizowania przez człowieka.
źródło
Jeśli nie chcesz używać formuł lub VBA, użyj Power Query. (W programie Excel 2016, Get & Transform, w programie Excel 2010 lub 2013 zainstaluj dodatek PowerQuery, aby śledzić dalej).
źródło
Jest to podobny liniowiec, który przekształca oktety w 3-cyfrowe pola, które umożliwiają prawidłowe sortowanie.
10.1.0.15
staje się10001000015
.źródło
Otrzymując dobre punkty od odpowiedzi wszystkich, oto moje rozwiązanie. Potrzebna jest tylko 1 kolumna pomocnicza. Próbujemy sformatować adresy IPv4 do
012.198.043.009
formatu, a następnie posortować je:12.198.43.9
do12 198 43 9
, a następnie do012.198.043.009
Sformatuj adresy IPv4 w
012.198.043.009
formacie, wprowadzając N2 i wypełniając w dół:Sortuj według kolumny N
Wyjaśnienie
Wprowadzając
SUBSTITUTE
kropkę.
z 6 spacjami , otrzymujemy następujące informacje, aby można je było poprawnie wyodrębnić:Następnie wyodrębnij i sformatuj każdą część według
TEXT(..., "000")
.źródło
Jeśli używasz najnowszej wersji programu Excel w systemie Windows, możesz użyć następującej formuły do obliczenia 32-bitowej wartości dziesiętnej adresu IP.
Następnie można sortować według pochodnej wartości dziesiętnej. Zastąp
[@ipbase]
lokalizację komórki prawidłowego adresu IP4.Funkcja „FILTERXML” działa tylko w systemie Windows, więc nie masz szczęścia, jeśli używasz innego systemu operacyjnego.
źródło
Mam również jednowierszowy, który da ci wyściełany format IP (000 000 000 000) do sortowania alfa.
źródło