IPアドレスの並べ替え(Microsoft Excel)
Chuckには、1つの列に一連のIPアドレスを含むワークシートがあります。これらは、おなじみの192.168.2.1の形式です。彼が住所をソートする場合、それらは数値的にソートされません。たとえば、Excelは192.168.1.100を192.168.1.1と192.168.1.2の間に配置します。 Chuckは、IPアドレスの列を並べ替えて、適切な順序で表示する方法があるかどうか疑問に思います。
これは、ExcelがIPアドレスを数字や一連の数字ではなく、テキストとして表示するために発生します。問題を回避する方法はいくつかありますが、そのいくつかについてはこのヒントで説明します。データとそのデータの使用方法によって定義されるように、ニーズに適したアプローチを選択する必要があります。
1つのアプローチは、IPアドレスの各オクテットが3桁で構成されていることを確認することです。 (オクテットは、ピリオドで区切られたIPアドレスの各部分です。)たとえば、192.168.1.1などのアドレスの代わりに、192.168.001.001を使用します。この「フロントパッド」は各オクテットにゼロを付け、すべてのIPアドレスがこの形式の場合、正しくソートされます。
各オクテットのフロントパディングを確実にするために式を使用したい場合は、次を使用できます。
=TEXT(LEFT(A1,FIND(".",A1,1)-1),"000") & "." & TEXT(MID(A1,FIND( ".",A1,1)+1,FIND(".",A1,FIND(".",A1,1)+1)-FIND(".",A1,1)-1),"000") & "." & TEXT(MID(A1,FIND(".",A1,FIND(".",A1,1)+1)+1,FIND(".",A1, FIND(".",A1,FIND(".",A1,1)+1)+1)-FIND(".",A1,FIND(".",A1,1)+1)-1), "000") & "." & TEXT(RIGHT(A1,LEN(A1)-FIND(".",A1,FIND(".",A1,FIND( ".",A1,1)+1)+1)),"000")
この式はかなり長いですが、それでも単一の式です。最初のIPアドレスの横の列に配置し(アドレスがセルA1にあると想定)、必要な数の行にコピーします。並べ替えを行うときは、列Bで並べ替えると、アドレスが適切な順序になります。
多数のIPアドレスを使用する場合は、IPアドレスの各オクテットにゼロをフロントパディングしてから完全にフォーマットされたIPを返すユーザー定義関数を作成することをお勧めします。以下がタスクを実行します:
Function FormatIP(IPAddr As String) As String Dim Dot1 As Integer Dim Dot2 As Integer Dim Dot3 As Integer Dim Octet1 As String Dim Octet2 As String Dim Octet3 As String Dim Octet4 As String Dot1 = InStr(1, IPAddr, ".", vbTextCompare) Dot2 = InStr(Dot1 + 1, IPAddr, ".", vbTextCompare) Dot3 = InStr(Dot2 + 1, IPAddr, ".", vbTextCompare) Octet1 = Left(IPAddr, Dot1-1) Octet2 = Mid(IPAddr, Dot1+1, Dot2-Dot1-1) Octet3 = Mid(IPAddr, Dot2+1, Dot3-Dot2-1) Octet4 = Mid(IPAddr, Dot3+1, Len(IPAddr)) FormatIP = Right("000" & Octet1, 3) & "." FormatIP = FormatIP & Right("000" & Octet2, 3) & "." FormatIP = FormatIP & Right("000" & Octet3, 3) & "." FormatIP = FormatIP & Right("000" & Octet4, 3) End Function
Excelでは、セルA1に元のIPアドレスがあると仮定して、この方法でUDFを使用できます。
=FormatIP(A1)
もう1つのアプローチは、IPアドレスを個別の列に分割し、各オクテットを独自の列に配置することです。これは、Text to Columnsツールを次のように使用すると簡単に実行できます:
。 IPアドレスの右側に3つの空白の列があることを確認してください。
。 IPアドレスを含むセルの範囲を選択します。
。リボンの[データ]タブを表示します。
。 [データツール]グループの[テキストから列へ]ツールをクリックします。 Excelは、テキストを列に変換ウィザードを開始します。 (図1を参照)
。 [区切り]ラジオボタンを選択します。
。 [次へ]をクリックします。
。 [その他]の横のチェックボックスを選択し、チェックボックスの右側にピリオドを入力します。
。 [完了]をクリックします。
完了したら、通常の数値の並べ替えと同じように4つの列を並べ替えることができます。次に、IPアドレスを元に戻したい場合は、次のような式を使用できます。
=A1 & "." & B1 & "." & C1 & "." & D1
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(13481)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。