[[雑記]] #setlinebreak(on) IPアドレスからセグメントを探したいが、完全一致で探す事は出来ない。 Excelの数式だけで、IPアドレスからセグメントを探したいが、完全一致で探す事は出来ない。 そこでクラスA、クラスB、クラスCに変換してセグメント表と比較、 一致するセグメント名やら詳細情報を抜き出したい。 比較はVLOOKUPで出来るが、IPアドレスをクラスA-Cのセグメントに直す 関数がExcelでは存在しないので、簡単な数式を考える。 自分で考えたんじゃなくネットを漁ってそれっぽい関数を組み合わせただけだけど。 これが一番楽だった。 クラスC =IF(A1="","",MID(A1,1,FIND("Σ",SUBSTITUTE(A1,".","Σ",3))))&"0" クラスB =IF(A2="","",MID(A2,1,FIND("Σ",SUBSTITUTE(A2,".","Σ",2))))&"0.0" クラスA =IF(A3="","",MID(A3,1,FIND("Σ",SUBSTITUTE(A3,".","Σ",1))))&"0.0.0" 1.SUBSTITUTE関数で「.」のX個目を「Σ」に置き換える(クラスCだと3、Bは2、Aは1) 2.FIND関数で「Σ」までの文字列を数える 3.MID関数でFINDでカウントした数でぶった切る 4.IF関数はA列がブランクなら非表示、IPアドレスがあればセグメント表記にする 5.&以降はセグメント表とあわせるために0の補間する [上記式の出力例] ,IP ADDRESS,SEGMENT ,192.168.111.111,192.168.111.0 ,172.16.1.1,172.16.0.0 ,10.1.1.1,10.0.0.0