• ベストアンサー

ExcelでIPアドレスをオクテット毎に分割したい

お世話になります。 Excelシート上のA列にIPアドレスが並んでおり、 第1オクテットから第4オクテットは3桁までの数で それぞれ"."で区切られています。 各オクテットの数値をB列~E列に分けて入れるには B列~E列にどのような関数を入れたらよいでしょうか、お知恵を拝借したく お願いいたします。 ↓理想図です ------------------------------ A        |  B | C | D | E  | ------------------------------ 1.2.3.4      | 1 | 2 | 3 | 4 | ------------------------------ 10.5.100.6   | 10 | 5 | 100| 6 | ------------------------------ 101.22.7.102  | 101| 22 | 7 | 102| ------------------------------ 33.8.103.104  | 33 | 8 | 103| 104| ------------------------------

質問者が選んだベストアンサー

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

A列をB列にコピー 「データ」「区切り位置」で「カンマと...」を選んで「次へ」 「その他」の欄に「.」を入れて「完了」という方法もあります。 数式で行うなら B2=LEFT(A2,FIND(".",A2)-1) C2=MID(LEFT(A2,FIND(".",A2,LEN(B2)+2)-1),LEN(B2)+2,3) D2=MID(LEFT(A2,FIND(".",A2,LEN(B2&C2)+3)-1),LEN(B2&C2)+3,3) E2=RIGHT(A2,LEN(A2)-LEN(B2&C2&D2)-3)

linen3
質問者

お礼

ご回答ありがとうございます! 区切り位置で分けるのが簡単のようですね。 関数もご教授いただきありがとうございました。 No.1の回答者様にも即座にご回答いただき、大変感謝しております。今後は必要に応じて使い分けたいと思います。 皆様ありがとうございました。

その他の回答 (3)

  • cockerel
  • ベストアンサー率46% (253/548)
回答No.4

>どうもエレガントではありません。。。。。 エレガントではありませんが、ダミーは不要です。B1、C1、D1、E1にそれぞれ次の式を入れます。もう少しきれいにいきたいところですが・・・ =TRUNC(SUBSTITUTE(SUBSTITUTE(A1,".",,3),".",,2)) =TRUNC(SUBSTITUTE(SUBSTITUTE(A1,(B1&"."),,1),".",,2)) =TRUNC(SUBSTITUTE(A1,(B1&"."&C1&"."),,1)) =TRUNC(SUBSTITUTE(A1,(B1&"."&C1&"."&D1&"."),,1)) 最後のTRUNCは成形のためだけに使用しています。

linen3
質問者

お礼

ありがとうございました。 これは、、、全然考え付かなかったです! というか貼り付けたら見事に成功しましたが仕組みはよくわかってないです。 これから分析します。。。 皆様すごいです!

  • otoutann
  • ベストアンサー率26% (248/933)
回答No.2

私はダミーの列が必要な場合は別シートで計算する事にしています。 そのシートを隠しておけば、見た目だけはエレガントです。

  • otoutann
  • ベストアンサー率26% (248/933)
回答No.1

1回こっきりの作業でしたら、一度テキストファイルで保存して、 そのテキストファイルをエクセルで開く時に、セパレーターを "."にすれば数字をセル毎に分ける事はできますが。

linen3
質問者

お礼

回答ありがとうございます。 なるほど~簡単でした! ただ、作業は今後何回も発生すると予想されるので、関数では何かないでしょうか・・・・・・。 RIGHT,LEFT,FIND,LEN関数を組み合わせ、 ダミー列を何列か挿入してなんとかできるのですが、 どうもエレガントではありません。。。。。

関連するQ&A