問題
解いてみた
apacheログはおなじみのファイル。
APNICのファイルはこんなフォーマット。
いやーIPの比較って意外にめんどいなと思って逃げ出したくなりました。
どうにかしてExcelだけで解きたい。
とりあえずJP かつ ipv4しか必要ないので、ほかのものを削除します。
範囲は最小でどのくらいか見てみると256でした。
IPアドレスの比較って大変だよなーと思ってたらふと「16進数で考えれば」レンジも足せばいいだけだし、比較も簡単になるんじゃないか。
という結論に至りました。
たとえばこんな感じです。
全部16進数に変換する(A)
↓
レンジを足す(B)
↓
国を調べたいIPアドレスがAとBの間にあればJP
ということでできそう。
とりあえずExcelの横の方に書いておきます。
つぎはレンジを16進数に変換です。
ん?Excelで10進数を16進数に変換できるのか?
調べてみると
=DEC2HEX(変換したいセル)
でできるらしい。
すごい。
あとはこれを足せばいい。
ん?Excelで16進数の足し算できるのか?
=DEC2HEX(HEX2DEC(D2)+HEX2DEC(E2))
というような感じで16進数を10進数に変換して足し算をして、結果を再度16進数に変換する。
という方法でできそう。
あってるっぽいです。
これでIPアドレスがE列からF列の間であればJPだということになります。
さて、次はアクセスログからIPアドレスを抽出します。
これと同じやり方で集計します。
同じIPアドレスを省くと1254件ありました。
これを16進数に変換します。
そして比較します。
少しマクロを組んで大小比較できるようにします。
単純に大小比較しているだけです、日本のIPには1をつけておいて、あとで数を数えるプログラムです。
これが正解でした。