こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルの関数でIPアドレスのあるブロック部分だけ文字列を取り出したい

A1セルに www.xxx.yyy.zzzというIPアドレスがあります。
このうちyyyの部分だけ、関数を使用してB1セルに自動で入力するようにしたいです。
www.xxx.の文字数は常に固定ですが、yyy.zzzは文字数が変動します。
yyy、zzzの各ブロックは最低1文字、多くて3文字になります。

お手数ですが、ご教授頂きたくお願い申し上げます。

投稿日時 - 2009-05-25 16:39:39

QNo.4989247

すぐに回答ほしいです

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

基本はmid関数です。=mid(文字列,開始位置,文字数)ですね。最初の
[www.xxx.]の部分は決まってますから、開始位置は固定です。たと
えば今は9文字目から。問題は文字数が1~3で変動するのをどうやっ
て捕まえるか。

マジメにヤルなら、find関数でドットの位置を検索して文字数を計
算します。=find(".",A1,9)とすると、9文字目以降最初に.が現れる
のは何文字目か分かりますから、=find(".",A1,9)-9文字が取り出す
べき文字数です。

=mid(A1,9,find(".",A1,9)-9)

これはmt2008さんと全く同じですね。4つ目のブロックを取り出す場
合に応用が利くのでおすすめです。

とか言ってずぼらな私は、3文字固定で取り出しても小数点以下がつ
いてるだけにしか見えないことを使って、

=int(mid(A1,9,3))

というザツい方法を使いますけどね。

投稿日時 - 2009-05-25 17:20:01

お礼

教えて頂いた内容で関数でできました。ありがとうございます。

投稿日時 - 2009-05-26 00:10:31

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.7

こんにちは。

よく読んでみると、IPアドレスであって、ULR ではないわけですね。

#6さんのご指摘のように、111.222.333.444 というIPアドレスは、1ブロック目も2ブロック目も、本当に固定なのでしょうか?ISPが同じなら、変わらないと思いますが、そうでないと変わってしまいます。各ブロックは、1桁~3桁まであるわけですね。

以下は、あくまでも、「.」の場所で決めています。
ご参考までに出しておきます。

=MID(A1,FIND("^",SUBSTITUTE(A1,".","^",2))+1,FIND("^",SUBSTITUTE(A1,".","^",3))-FIND("^",SUBSTITUTE(A1,".","^",2))-1)

IPアドレス汎用にするには、このようになります。別のブロックなら、SUBSTITUTE の引数の 2,3 を入れてください。

投稿日時 - 2009-05-25 18:48:27

ANo.6

この点質問書いてありますか・。
>IPアドレスがあります
IPアドレスの入ったセルを見つけるのは、人間?
>​www.xxx.​の文字数は常に固定ですが
これは問題としては易しくなってありがたい。RIGHT関数で右残りは判るから。
>yyyの部分だけ、関・・
yyyとzzzの区切りはどうすれば(どう考えれば)判るの?
>yyy.zzzは文字数が変動します。
ならyyyの部分は尋常では判別できないのでは。
ーー
説明が荒っぽく無いですか?

投稿日時 - 2009-05-25 17:20:19

「yyy、zzzの各ブロック」の文字数に関係ない次式は如何?
=LEFT(MID(A1,9,99),FIND(".",MID(A1,9,99))-1)

投稿日時 - 2009-05-25 17:11:17

ANo.3

#1のhandomariです。

先の説明の2行目を間違えました。

←仮にA4に取り出したとします。

に修正してください。

投稿日時 - 2009-05-25 16:59:33

ANo.2

「WWW.XXX.」が固定(9文字目からYYYが始まる)場合、↓これで
良いかと思われます。
=MID(A1,9,FIND(".",A1,9)-9)

FINDで9文字目以降で初めて「.」が出てくる位置を取得して
MIDで9文字目からFINDで取得した位置-9 文字を取り出して居ます。

投稿日時 - 2009-05-25 16:57:44

ANo.1

いったん作業用のセルにwww.xxx.の後ろ側を次の関数で取り出します。

=MID(A1,9,7)   ←仮にB1に取り出したとします。

その後に、次の関数でyyy部分が取り出せます。

=LEFT(A4,FIND(".",A4)-1)

さらに、次の関数でzzz部分が取り出せます。

=RIGHT(A4,LEN(A4)-FIND(".",A4))

投稿日時 - 2009-05-25 16:57:18

あなたにオススメの質問