IPアドレスを16進数に変換するエクセルの関数

IPアドレスを16進数に変換するエクセルの関数について調べていたのですが、海外のサイトで関数が公開されていたので、実際に動作を確認してみたところ、動作したので、共有します。

 

参考にしたサイトはこちら。

https://www.mrexcel.com/board/threads/formula-for-converting-ip-address-to-hex.247596/

 

以下はコードの抜粋です。

 

■コード

=DEC2HEX(IF(ISERR(LEFT(A1,FIND(CHAR(46),A1)-1)),A1,LEFT(A1,FIND(CHAR(46),A1)-1)), 2)&"."&DEC2HEX(MID(MID(MID(SUBSTITUTE(A1,CHAR(46),"^",1),1,256),FIND("^",SUBSTITUTE(A1,CHAR(46),"^",1)),256),2,FIND(CHAR(46),MID(MID(SUBSTITUTE(A1,CHAR(46),"^",1),1,256),FIND("^",SUBSTITUTE(A1,CHAR(46),"^",1)),256))-2), 2)&"."&DEC2HEX(MID(MID(MID(SUBSTITUTE(A1,CHAR(46),"^",2),1,256),FIND("^",SUBSTITUTE(A1,CHAR(46),"^",2)),256),2,FIND(CHAR(46),MID(MID(SUBSTITUTE(A1,CHAR(46),"^",2),1,256),FIND("^",SUBSTITUTE(A1,CHAR(46),"^",2)),256))-2), 2)&"."&DEC2HEX(IF(LEN(A1)-LEN(SUBSTITUTE(A1,CHAR(46),""))=0,A1,RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,CHAR(46),"*",LEN(A1)-LEN(SUBSTITUTE(A1,CHAR(46),"")))))), 2)

 

以下はA1のセルに入力した値を16進数に変換する関数ですが、「10.0.0.1」を入力すると以下のように表示されます。

 

「0A.00.00.01」

 

 

間の「.」を表示させたくない場合は、以下のコードを利用します。

 

=DEC2HEX(IF(ISERR(LEFT(A2,FIND(CHAR(46),A2)-1)),A2,LEFT(A2,FIND(CHAR(46),A2)-1)), 2)&DEC2HEX(MID(MID(MID(SUBSTITUTE(A2,CHAR(46),"^",1),1,256),FIND("^",SUBSTITUTE(A2,CHAR(46),"^",1)),256),2,FIND(CHAR(46),MID(MID(SUBSTITUTE(A2,CHAR(46),"^",1),1,256),FIND("^",SUBSTITUTE(A2,CHAR(46),"^",1)),256))-2), 2)&DEC2HEX(MID(MID(MID(SUBSTITUTE(A2,CHAR(46),"^",2),1,256),FIND("^",SUBSTITUTE(A2,CHAR(46),"^",2)),256),2,FIND(CHAR(46),MID(MID(SUBSTITUTE(A2,CHAR(46),"^",2),1,256),FIND("^",SUBSTITUTE(A2,CHAR(46),"^",2)),256))-2), 2)&DEC2HEX(IF(LEN(A2)-LEN(SUBSTITUTE(A2,CHAR(46),""))=0,A2,RIGHT(A2,LEN(A2)-FIND("*",SUBSTITUTE(A2,CHAR(46),"*",LEN(A2)-LEN(SUBSTITUTE(A2,CHAR(46),"")))))), 2)

 

以下のように表示されるはずです。

 

「0A000001」

 

これを調べたのは使いたい用途があったのですが、そちらについてはまた別途、紹介したいと思います。

 

[ティンバックツー] ショルダーバッグ クラシックメッセンジャー S Jet Black (2020年モデル)