• ベストアンサー

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

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

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

  • ベストアンサー
回答No.5

基本は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)) というザツい方法を使いますけどね。

stargazer7
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (6)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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 を入れてください。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

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

すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.4

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

すると、全ての回答が全文表示されます。
  • handomari
  • ベストアンサー率47% (83/174)
回答No.3

#1のhandomariです。 先の説明の2行目を間違えました。 ←仮にA4に取り出したとします。 に修正してください。

すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

「WWW.XXX.」が固定(9文字目からYYYが始まる)場合、↓これで 良いかと思われます。 =MID(A1,9,FIND(".",A1,9)-9) FINDで9文字目以降で初めて「.」が出てくる位置を取得して MIDで9文字目からFINDで取得した位置-9 文字を取り出して居ます。

すると、全ての回答が全文表示されます。
  • handomari
  • ベストアンサー率47% (83/174)
回答No.1

いったん作業用のセルにwww.xxx.の後ろ側を次の関数で取り出します。 =MID(A1,9,7)   ←仮にB1に取り出したとします。 その後に、次の関数でyyy部分が取り出せます。 =LEFT(A4,FIND(".",A4)-1) さらに、次の関数でzzz部分が取り出せます。 =RIGHT(A4,LEN(A4)-FIND(".",A4))

すると、全ての回答が全文表示されます。

関連するQ&A

このQ&Aのポイント
  • 大阪西区新町に住んでいる方にお知らせです!近くに無料で使える血圧計が設置されているスギ薬局を教えます。
  • 大阪西区新町にお住まいの方への情報です。自転車で10分圏内にあるスギ薬局では、無料で利用できる血圧計が設置されています。
  • スギ薬局では無料で使える血圧計が設置されていますので、大阪西区新町にお住まいの方はぜひ利用してみてください!
回答を見る

専門家に質問してみよう