メッシュコード

先日、ネット上で防災科学研究所「地震ハザードステーション」というサイトを見つけました。
このサイトを見てみると「地震ハザードカルテ2017年版」というページがあり、特定の地域内の地震に関する情報をクラフや数値で示されています。
詳しくてわかりやすい。
このカルテを物件毎にリンクさせよう思いましたが、リンクさせるためには「メッシュコード」が必要。

「メッシュコード」ってなに?

調べると「緯度・経度に基づいて地域をほぼ同じ大きさの網の目(メッシュ)に分けたもの」だそうです。緯度・経度からメッシュコードに変換する計算は掛けたり割ったりするだけで単純。しかし計算式にすると、ケッコウ長い。
エクセルだと
=INT([緯度]*60/40)*1000000+INT([経度]-100)*10000+INT(MOD([緯度]*60,40)/5)*1000+INT(MOD(([経度]-100),1)*60/7.5)*100+INT(MOD(MOD([緯度]*60,40),5)*60/30)*10+INT(MOD(MOD(([経度]-100),1)*60,7.5)*60/45)
こんな感じ。

この計算式で算出した値でリンクさせてみましたが、エラーになってしまう。
よく見ると、この計算式で算出される値の桁数が8桁で、「地震ハザードカルテ」のメッシュコードは10桁。
2桁足らない。。。。

なんとか調べると、通常のメッシュコードより更に細かい4分の1地域メッシュコードというのがありました。
これを計算式にすると、上記の計算式の2倍程の長さになってしまいました。

上の計算式はエクセルですが、これをVBA(ビジュアルベーシック)というプログラミング言語に変えると、新たな問題が発生。
エクセルのMOD関数は、VBAでは演算子。エクセルでは小数点以下の答えが帰ってきても、VBAでは整数に丸められて帰ってくる。。。。
仕方がないので、計算前に値を100万倍して結果を100万で割って対応。
とても苦労させられました。(けっこう楽しんでいます)

私は不動産仲介業です。一体何をしているのやら。。。。