Sắp xếp cột Excel theo địa chỉ IP


17

Tôi có một bảng tính Excel khá lớn (hơn 200 hàng) liệt kê các mục trong mạng của tôi (ví dụ: máy in, máy chủ, máy trạm, máy chiếu mạng, v.v.) và một trong những cột đầu tiên là trường Địa chỉ IP, có dạng 192.168.x.y. Vấn đề của tôi khi tôi cố gắng sắp xếp nó là nó đi (làm ví dụ) từ 192.168.0.85đến 192.168.0.9. Những gì tôi muốn thấy là nó sắp xếp dựa trên 3 octet đầu tiên, sau đó octet cuối cùng một cách logic (ví dụ .1, .2, .3, vv). Điều này có thể không? Nếu vậy thì thế nào?

Câu trả lời:


19

Như nixda đã đề cập trong các bình luận, các cột trợ giúp sẽ làm điều này có thể. Bạn có hai tùy chọn để duy trì trang tính sau đó:

  • Thêm tất cả IP mới trong các cột trợ giúp phân chia.
  • Lặp lại quy trình Chuyển văn bản thành cột để bổ sung mới.

Đây là thủ tục:

  1. Chọn cột IP của bạn và nhấp Data>Text-to-Columns văn bản-cột

  2. Chọn tùy chọn Delimted và nhấn Next. Kiểm tra Otherhộp kiểm và nhập một khoảng thời gian .. Nhấn tiếp. chọn .  như dấu phân cách

  3. Giữ tất cả các cột, giữ chúng là Chung, nhấp vào biểu tượng phạm vi để chỉnh sửa Destinationphần. thay đổi số phận 1

  4. Chọn các cột mà bạn muốn văn bản mới xuất hiện. Nhấn phím Enter. thay đổi số phận 2

  5. Đảm bảo phạm vi của bạn được chọn và nhấp Data> Sort. Nhập tiêu chí sắp xếp. Tiếp tục thêm cấp độ cho mỗi octet. phân loại

  6. Đây là kết quả cuối cùng: kết quả


@nixda Yea, poke chậm: P Ước gì tôi cũng có thể ném một số đại diện theo cách của bạn
Luke Luke REINSTATE MONICA

Xin lỗi, @nixda! Có phải là bất hợp pháp khi bạn thêm câu trả lời của bạn là tốt?
rishimaharaj

Chà, nó đã hoạt động ... Thời gian để hai bạn chiến đấu với hơn 15 điểm đại diện
Luke Luke REINSTATE MONICA

7

Tôi nhận ra đây là một bài viết cũ, nhưng vì lợi ích của việc cung cấp một giải pháp làm việc, tôi trình bày như sau.

Chỉ cần đặt công thức này vào một ô liền kề và cập nhật các tham chiếu để trỏ đến ô chứa địa chỉ IP của bạn (A1 trong ví dụ này). Điều này sẽ tạo ra một kết quả tương tự như 010.121.008.030, sau đó có thể được sắp xếp (chính xác) theo thứ tự bảng chữ cái. Sau đó đặt chiều rộng của cột mới thành 0 và voila. Thời gian để thưởng thức một tách cà phê.

=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
Tình yêu này, hoàn hảo. Một công thức duy nhất, một cột "người trợ giúp". Cảm ơn.
Earls

Như với tất cả các công thức Excel, bạn có thể cần sử dụng dấu chấm phẩy ( ;) thay vì dấu phẩy ( ,) dựa trên cài đặt khu vực của hệ thống.
Scott

1
Bạn có thể bỏ các dấu chấm nối ( …&"."&…) và lấy một số có mười hai chữ số, như 010121008030, cũng sẽ sắp xếp chính xác (mặc dù hàm sắp xếp có thể ném hộp thoại gây phiền nhiễu cho bạn).
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

Tôi không thể kiểm tra điều đó ngay bây giờ (không phải tại nơi làm việc), nhưng tôi sẽ thử nó khi tôi đi làm. Điều này có vẻ như sẽ thích ứng hơn với các danh sách dài hơn, đặc biệt nếu tôi chỉ cần thêm nút 'Khu nghỉ dưỡng' để chạy macro này
Luke Luke REINSTATE MONICA của Canada

@CanadianLuke Bạn cũng có thể tạo một cột BigIntIP. Sau đó, bạn có thể sắp xếp tất cả các địa chỉ IP và ngược lại AZ.
STTR

Điều này làm việc tuyệt vời! Yêu cầu duy nhất của tôi là nó sử dụng lại các cột cũ khi máy in được thêm vào
Luke Luke REINSTATE MONICA của Canada

@CanadianLuke Nếu bạn đổi tên một chủ đề "IP oct 1" thì cột sẽ được thêm vào bên phải. Và cái cũ vẫn còn. Đây là nếu bạn cần một câu chuyện. Ví dụ: khi di chuyển từ mạng này sang phạm vi khác. Có lẽ tôi không hiểu lắm về câu hỏi ...
STTR 18/07/13

0

Ngoài câu trả lời của John Homer, tôi ở đây cung cấp một công thức cũng hoạt động trong ứng dụng Số của Apple, vì TEXTchức năng không tồn tại ở đó. Cũng được thử nghiệm trong Google Docs.

=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)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.