Googleスプレッドシートで、IPアドレスを並べ替える方法についてです。
「テキストを列に分割」メニューを使って4列に分割すれば間違いなくできますが、ここでは関数で並べ替える例を試してみます。
「テキストを列に分割」メニューを使って4列に分割すれば間違いなくできますが、ここでは関数で並べ替える例を試してみます。
- QUERY関数を使ってIPアドレスを並べ替えることができます。
手順
B列にIPアドレスが並んでいます。
単純にソートしようとするとオクテット(0~255)ごとの区切りが考慮されないのでおかしな結果になります。
そこで関数を使って並べ替えをしてみます。
D3セルに次のように入力します。
D3セル
=QUERY({B3:B14,ARRAYFORMULA(SPLIT(B3:B14,"."))},"SELECT Col1 ORDER BY Col2,Col3,Col4,Col5")
QUERY関数の第1引数により「もとのIPアドレスと、そのIPアドレスを『.』で区切った4列」の計5列の行列を生成します(詳しくは下記参照)。
そして第2引数のORDER BY 句により2列目以降の4つの列を基準に昇順で並べ替え、SELECT句により1列目だけを表示させます。
ちなみに見出し(B2セル)を参照に含めるとSPLITで分割した列数が一致せずうまくいかないような気もしますが、実は問題ありませんので参考まで。
確定した様子です。
なお、上記の式の第1引数の内容だけを表示するとこのようになります。SPLIT関数で分割された値は数値になっているのがわかります。
QUERY関数を使うことで、この行列の2列目以降を並べ替えに使いつつ、1列目の値だけを表示させているというわけです。
D3セル
={B3:B14,ARRAYFORMULA(SPLIT(B3:B14,"."))}