Excel sütununu IP adresine göre sıralama


17

Ağımdaki öğeleri (yani yazıcılar, sunucular, iş istasyonları, ağ projektörleri, vb.) Listeleyen oldukça büyük (200'den fazla satır) bir Excel elektronik tablosu var ve ilk sütunlardan biri formu alan IP Adresi alanıdır 192.168.x.y. Sıralamaya çalıştığımda benim sorunum, (örnek olarak) ' 192.168.0.85e gitmesidir 192.168.0.9. Ne görmek istiyorum ilk 3 sekizli dayalı sıralama olduğunu mantıken ardından son sekizli (yani .1, .2, .3, vs). Mümkün mü? Öyleyse nasıl?

Yanıtlar:


19

Yorumlarda belirtildiği gibi, yardımcı sütunlar bunu mümkün kılacaktır. Daha sonra sayfayı korumak için iki seçeneğiniz vardır:

  • Tüm yeni IP'leri bölünmüş yardımcı sütunlarına ekleyin.
  • Yeni eklemeler için Metin-sütun prosedürünü tekrarlayın.

İşte prosedür:

  1. IP sütununuzu seçin ve Data>Text-to-Columns text-to-sütunları

  2. Sınırlandırılmış seçeneğini belirleyin ve İleri'yi tıklayın. Kontrol Otheronay kutusunu ve bir döneme girmek .. Sonrakine tıkla. Seç .  sınırlayıcı olarak

  3. Tüm sütunları saklayın, Genel olarak saklayın, Destinationbölümü düzenlemek için aralık simgesini tıklayın . hedef 1'i değiştir

  4. Yeni metnin görünmesini istediğiniz sütunları seçin. Enter tuşuna basın. hedef 2'yi değiştir

  5. Aralığınızın seçili olduğundan emin olun ve Data> öğesine tıklayın Sort. Sıralama ölçütlerini girin. Her sekizli için seviye eklemeye devam edin. sıralama

  6. Sonuç: sonuç


@nixda Yea, yavaş kurcalamak: P Keşke ben de senin yolunu bazı temsilcisi atmak isterdim
Kanadalı Luke

Üzgünüm, @nixda! Cevabınızı da eklemeniz yasa dışı mı?
rishimaharaj

Peki, işe yaradı ... İkiniz için ekstra 15 tekrar noktasıyla savaşma zamanı
Kanadalı Luke

7

Bunun eski bir yazı olduğunun farkındayım, ancak çalışan bir çözüm sunmak adına aşağıdakileri sunuyorum.

Bu formülü bitişik bir hücreye koyun ve referansları IP adresinizi içeren hücreyi gösterecek şekilde güncelleyin (bu örnekte A1). Bu, 010.121.008.030'a benzer bir sonuç üretir ve bu daha sonra alfabetik olarak doğru şekilde sıralanabilir. Ardından yeni sütunun genişliğini sıfır ve voila olarak ayarlayın. Bir fincan kahvenin tadını çıkarma zamanı.

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

2
Bunu sev, mükemmel. Tek bir formül, bir "yardımcı" tek sütun. Teşekkürler.
Earls

Tüm Excel formüllerinde olduğu gibi, sisteminizin bölgesel ayarlarına bağlı olarak virgül ( ;) yerine noktalı virgül ( ) kullanmanız gerekebilir ,.
Scott

1
Birleştirilmiş periyotları ( …&"."&…) bırakabilir ve 010121008030 gibi düz, on iki haneli bir sayı elde edebilirsiniz, bu da doğru bir şekilde sıralanır (sıralama işlevi size can sıkıcı bir iletişim kutusu atabilir).
Scott

1
Sub IPSplit()

HeaderRow = 1
ColimnName = "A"
BeginIPaddsressData = 2

Dim HeaderArray As Variant
HeaderArray = Array("IP oct 1", "IP oct 2", "IP oct 3", "IP oct 4")

Dim Octet() As String
Dim RangeSearch As Range, RangeFound As Range, LastCell As Range
Dim LastCellRowNumber As Long, LastCellColumnNumber As Long, RowNumber As Long

With ActiveSheet
Set LastCell = .Cells(HeaderRow, .Columns.Count).End(xlToLeft)
LastHeaderColumnNumber = LastCell.Column

Set RangeSearch = Range("1:1")
Set RangeFound = RangeSearch.Find(What:=HeaderArray(0), LookIn:=xlValues)

If RangeFound Is Nothing Then
RowNumber = 2
    If .Cells(RowNumber, .Columns.Count) <> vbNullString Then
        Set LastCell = .Cells(RowNumber, .Columns.Count)
        LastCellColumnNumber = LastCell.Column
    Else
        Set LastCell = .Cells(RowNumber, .Columns.Count).End(xlToLeft)
'Specifies the last column LastCellColumnNumber.

        LastCellColumnNumber = LastCell.Column
    End If

Range(Cells(HeaderRow, LastCellColumnNumber + 1), Cells(HeaderRow, LastCellColumnNumber + 4)).Value = HeaderArray
'Insert Header

Else
LastCellColumnNumber = RangeFound.Column - 1
End If

Set LastCell = .Cells(.Rows.Count, ColimnName).End(xlUp)
'Specifies the last cell number in the column ColimnName.

LastCellRowNumber = LastCell.Row   
End With

    For I = BeginIPaddsressData To LastCellRowNumber

    Octet = Split(Cells(I, ColimnName).Value, ".")
    For O = 0 To 3       
'cells populate the values of octets 1-4.
      If (UBound(Octet) - O) >= 0 Then      
         Cells(I, ColimnName).Offset(0, LastCellColumnNumber + O).Value = Octet(O)
      End If
    Next
Next
End Sub

Bunu şu anda test edemiyorum (işte değil), ama işe geldiğimde deneyeceğim. Bu, özellikle bu makroyu çalıştırmak için bir 'Tatil Yeri' düğmesi eklersem daha uzun listelere daha uyumlu olabilir gibi görünüyor
Kanadalı Luke

@CanadianLuke BigIntIP sütunu da oluşturabilirsiniz. Sonra tüm IP adreslerini sıralayabilir ve tersi de AZ olabilir.
STTR

Harika çalışıyor! Tek isteğim, yazıcılar eklendikçe eski sütunları yeniden kullanmasıdır
Kanadalı Luke

@CanadianLuke Bir konuyu "IP oct 1" olarak yeniden adlandırırsanız, sütun sağa eklenir. Ve eski kalır. Bu bir hikayeye ihtiyacınız varsa. Örneğin, bir ağdan başka bir aralığa geçerken. Belki de soruyu tam olarak anlamadım ...
STTR

0

John Homer'in cevabına ek olarak, burada TEXTişlev olmadığı için Apple'ın Sayılar uygulamasında da çalışan bir formül sağlıyorum . Ayrıca Google Dokümanlar'da da test edildi.

=DEC2HEX(LEFT(B2,FIND(".",B2)-1),2)
&
DEC2HEX(MID(
    B2,
    FIND(".",B2)+1,
    FIND(
        ".",
        B2,
        FIND(".",B2)+1
    ) - FIND(".",B2) - 1
),2)
&
DEC2HEX(MID(
    B2,
    FIND(
        ".",
        B2,
        FIND(".",B2)+1
    ) + 1,
    FIND(
        ".",
        B2,
        FIND(
            ".",
            B2,
            FIND(".",B2)+1
        )+1
    ) - FIND(
        ".",
        B2,
        FIND(".",B2)+1
    ) - 1
),2)
&
DEC2HEX(RIGHT(
    B2,
    LEN(B2) - FIND(
        ".",
        B2,
        FIND(
            ".",
            B2,
            FIND(".",B2)+1
        )+1
    )
),2)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.