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

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

このQ&Aに関連する最新のQ&A

A 回答 (7件)

基本は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))

というザツい方法を使いますけどね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/26 00:10

こんにちは。



よく読んでみると、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 を入れてください。
    • good
    • 1

この点質問書いてありますか・。


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

「yyy、zzzの各ブロック」の文字数に関係ない次式は如何?


=LEFT(MID(A1,9,99),FIND(".",MID(A1,9,99))-1)
    • good
    • 0

#1のhandomariです。



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

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

に修正してください。
    • good
    • 0

「WWW.XXX.」が固定(9文字目からYYYが始まる)場合、↓これで


良いかと思われます。
=MID(A1,9,FIND(".",A1,9)-9)

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

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



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

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

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

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

=RIGHT(A4,LEN(A4)-FIND(".",A4))
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QCATVのグローバルIPアドレスの変更について。

現在CATV回線を利用しており、グローバルIPアドレスがルータに割り当てられています。
しかし、このグローバルIPアドレスはルータのMACアドレスと自動的に紐付けされてしまうのか、
何度モデムやルータの電源を入れなおしても同じIPアドレスが割り当てられてしまいます。

今までIPアドレスが変更されたのは自宅のルータを変更した際と、
CATV側のメンテナンスがあった時のみで、
モデムの交換をしても変更されませんでした。

そこで、MACアドレスが変われば割り当てられるグローバルIPアドレスも変わるだろうと思い、
現在使っているNEC製ルータのWAN側疑似MACアドレス機能を使い、
昔使っていたルータ(家で眠っています)のMACアドレスに変更してみました。

すると、グローバルIPアドレスが変更されましたので、
MACアドレスが変わればグローバルIPアドレスも変更される事が確認できました。
また、MACアドレスを戻すとグローバルIPアドレスも元に戻ると言う事も確認できました。

ここで質問と言う事になるのですが、
今回私が行った方法よりも簡単にグローバルIPアドレスを変更する方法があれば教えてほしいです。
また、MACアドレスとグローバルIPアドレスがいつまでも紐付けされたままだとは思えないので、
どのぐらい経過すると紐付けされた状態から開放されるかを教えていただけたらと思います。
もちろんCATV局によって違うと思いますので、一般的にはどれくらいと言った程度でも教えていただけたらありがたいです。

ちなみに、グローバルIPアドレスを変更したい理由はセキュリティを考えてと言う事です。

現在CATV回線を利用しており、グローバルIPアドレスがルータに割り当てられています。
しかし、このグローバルIPアドレスはルータのMACアドレスと自動的に紐付けされてしまうのか、
何度モデムやルータの電源を入れなおしても同じIPアドレスが割り当てられてしまいます。

今までIPアドレスが変更されたのは自宅のルータを変更した際と、
CATV側のメンテナンスがあった時のみで、
モデムの交換をしても変更されませんでした。

そこで、MACアドレスが変われば割り当てられるグローバルIPアドレスも変わるだろうと...続きを読む

Aベストアンサー

質問の状況から読み取れることはグローバルIPアドレスをDHCPサーバーから自動的に付与されているようです。
一般的なDHCPサーバーの機能は再接続のときクライアントから前回付与されたIPアドレスを要求されるとリースの有効期間内ではMACアドレスと紐付きで再リース用に予約されていますので要求通りのIPアドレスを付与します。
また、IPアドレスに余裕があるときはリースの有効期間を過ぎても他のクライアントから新規の要求が有っても未使用IPアドレスを付与すると思われますので接続する端末(ルーター、PC等)のMACアドレスが変わらなければIPアドレスが変化しない傾向にあります。
フレッツ系のプロバイダーが採用しているPPPoE認証の場合は切断して再接続するとIPアドレスが変化します。

>ちなみに、グローバルIPアドレスを変更したい理由はセキュリティを考えてと言う事です。
IPアドレスを頻繁に変更することがセキュリティを高めることにはなりません。
また、個人情報の漏出防止に役立つわけでもありません。

QエクセルのVBAで教えたください。セルの文字数が特定の文字数の時のみ下2桁を書き出す方法。

VBA初心者です。仕事での作業で困っています。
大量の数値データが1列にあります。それぞれの数値の文字数を関数で隣のセルに表示しています。その文字数が例えば4文字の時だけ下2桁の数字をさらに隣のセルに書き出したいのですが、どのような式を作ればよいのでしょうか。

こんなイメージです。
セル1  セル2  セル3
1025   4    25
124556  6
12     2
1254   4    54
6587   4    87
よろしくお願いいたします。m(_ _)m

Aベストアンサー

こんにちは。

たぶん、何かの製作の途中だと思います。ですが、VBAで厳密には、「数値の文字数」はないのですが、VB系は、そこらへんが、あいまいなんですね。

曖昧なままで作ると、このようになります。
(小数点を含んだものは排除されます)

Sub Test1()
  Dim c As Variant
  For Each c In Range("A1", Range("A65536").End(xlUp))
    If IsNumeric(c.Value) Then
      If Abs(c.Value) Like "####" Then
        c.Offset(, 1).Value = Right(c.Value, 2)
      End If
    End If
  Next
End Sub


もし、プログラムらしい書き方を望むようでしたら、以下のようにしたらよいと思います。
1,2 とも、負の符号が必要な場合は、Sgn 関数でとってください。こちらは、小数点以下を取り去った数値の下2桁を出します。

Sub Test2()
  Dim c As Variant
  For Each c In Range("A1", Range("A65536").End(xlUp))
    If VarType(c) = vbDouble Then
      If Int(Log(Abs(c.Value)) / Log(10#)) = 3 Then
        c.Offset(, 1).Value = Fix(Abs(c.Value)) - Int(Abs(c.Value) / 100) * 100
      End If
    End If
  Next
End Sub

こんにちは。

たぶん、何かの製作の途中だと思います。ですが、VBAで厳密には、「数値の文字数」はないのですが、VB系は、そこらへんが、あいまいなんですね。

曖昧なままで作ると、このようになります。
(小数点を含んだものは排除されます)

Sub Test1()
  Dim c As Variant
  For Each c In Range("A1", Range("A65536").End(xlUp))
    If IsNumeric(c.Value) Then
      If Abs(c.Value) Like "####" Then
        c.Offset(, 1).Value = Right(c.Value, 2)
    ...続きを読む

QルーターIPアドレスが変更できない

今回、ルーター(warpstar)のIPアドレスを変更しようとしました。
なぜなら、HP上で見られる自分のIpアドレスと
自分のローカル接続Ipアドレスが違っているからです。

しかし、こんかい、ワープスター専用のweb上の設定画面へいって
IPアドレスを変更しても、そのとおりのアドレスになりません。

どうすれば、ローカル接続IPアドレスと
ルーターを介してのネット上でのIPアドレスが合同になるのでしょうか?

Aベストアンサー

ルータの設定画面で見られるIPアドレスは、LAN(ローカル・エリア・ネットワーク)側のアドレスです。LANというのは、あなたの家の中、という意味です。

Webページ上で見られるアドレスは、WAN(ワールド・エリア・ネットワーク)側のアドレスです。WANというのは、インターネットのことです。プロバイダから個々のルータにIPアドレスが割り振られます。ユーザーが変えることはできません。

現在のほとんどの通信機器のIPアドレスは、IPv4という規格です。IPv4は32ビット(10進数で4294967296)のアドレスを扱えますが、これだと世界中のPCにアドレスを振るには数が足りません。そこで、とりあえずルータに割り振り、ルータが管理するLAN内ではまた別の世界としてルータがLAN内だけで通用するアドレスを割り振っているのです。ちなみに、IPv6という規格は128ビットですので、世界中のPCにアドレスを割り振ることができます。

一見不便なようですが、LANの外からPCのアドレスが見えないということは、セキュリティの面では有利なのです。外からIPアドレスを見えなくすることをIPマスカレードといいますが、当たり前になってしまったためか、この言葉は最近聞かなくなりましたね。

ルータの設定画面で見られるIPアドレスは、LAN(ローカル・エリア・ネットワーク)側のアドレスです。LANというのは、あなたの家の中、という意味です。

Webページ上で見られるアドレスは、WAN(ワールド・エリア・ネットワーク)側のアドレスです。WANというのは、インターネットのことです。プロバイダから個々のルータにIPアドレスが割り振られます。ユーザーが変えることはできません。

現在のほとんどの通信機器のIPアドレスは、IPv4という規格です。IPv4は32ビット(10進数で4294967296)のアドレスを...続きを読む

Qエクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ移したい

エクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ移したいが、どのような関数を使えばよいのでしょうか?

Aベストアンサー

一文字だけ取り出すならば mid関数を使いましょう。


mid(a1,2,1)

とかいうように使います。

例では a1のセルの2文字目を取得しています。

QグローバルIPアドレスの変更タイミング

グローバルIPアドレスに関連していくつか質問があります。
・固定IP利用時以外はグローバルIPアドレスは提供元のプロバイダが任意のタイミングで変更していると認識しています。グローバルIPアドレスが変更されるタイミングはどのような規則に乗っ取っているのでしょうか?
・Webサーバーなどではリクエスト元のIPを取得する事ができますが、これは偽装が可能ですか?
・既存のセッションにはグローバルIPアドレスの変更は影響を与えないのでしょうか?
(グローバルIPアドレスが変更される事でセッションタイムアウトになったりしないですか?)

Aベストアンサー

>プロバイダが任意のタイミングで変更している
プロバイダによるかもしれないので一般論を。
接続時(ルータやモデムの再起動時)です。つまり、クライアントからIPアドレスの要求があったタイミング(DHCPの場合)で変更します。
厳密に言えばDHCPのリースの更新タイミングというのもあり得ますが、セッション中に変更なんてしてたら顧客からクレームきまくりになるので普通はしません。DHCPのリース時間もトラフィックの軽減という意味から数時間~数日なのが一般的ですし。


>偽装が可能ですか?
可能です。プロキシ使って代理アクセスさせれば簡単にできます。
本当の意味の偽装(IPスプーフィング)は割と面倒ですけど。

>影響を与えないのでしょうか?
影響あたえるでしょう。



・Webサーバーなどではリクエスト元のIPを取得する事ができますが、これは偽装が可能ですか?
・既存のセッションにはグローバルIPアドレスの変更は影響を与えないのでしょうか?
(グローバルIPアドレスが変更される事でセッションタイムアウトになったりしないですか?)

Qセル内に文字として式を入れて答えを別のセルに...

お世話になります。
例えば下記の表現のままひとつのセルに文字として式を書き、別のセルに答えを出す方法はございませんでしょうか?

10+20+30-40×10÷2

とひとつのセルに入力、

別のセルに100と答えが出ないでしょうか?

Aベストアンサー

1. 「ツール」→「マクロ」→「Visual Basic Editor」でマクロのエディタを開く。
2. Sheet1を開いて、以下のマクロを書き込む。
3. Sheet1のセル A1 に
  10+20+30-40×10÷2
  を書き込む。
4. Sheet1のセル B1 に答えである -40 が表示される。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim str As String
If Target = Range("A1") Then
str = "=" & Range("A1")
str = Replace(str, "×", "*")
str = Replace(str, "÷", "/")
Range("B1").Value = Evaluate(str)
End If
End Sub

QグローバルIPアドレスの変更方法について

グローバルIPアドレスを変更する事は可能でしょうか?プライベートIPアドレスの変更は、手元のパソコンのネットワーク接続からできるのは知っていますが、グローバルIPアドレスの変更方法は分かりません。
そもそも変更できるものなのでしょうか?

それから、ルータとは何の事でしょうか?IPアドレスとの関連性なんかも教えて頂ければ幸いです。

過去にも同じ質問があったかもしれませんが、どなたかご回答お願いします。

Aベストアンサー

回線は固定IPアドレスではないのですよね?
でしたらモデムや回線終端装置の電源を入れ直せば変更されますよ。また同じになる可能性もありますけど。

Qマクロ「A1の値は、セル範囲でA1:AB39の右2文字が YR と書いてあるセルの右隣の値」

よろしくお願いします
いつもgooの皆さんに大変お世話になっています
エクセルは2013です

マクロで
「A1の値は、セル範囲でA1:AB39の値(文字列)の右端2文字が YR と書いてあるセルの右隣の値」
はどういうコードになるでしょうか

例えば セル D10 の値(文字列)が、「2月合計yr」でしたら
セル A1 には 右隣のセル E10 の値を表示したいのです

右2文字は Ucase(Right(セル,2)) ですが
「セル範囲A1:AB39で、そのセルの右端2文字がYRと書いてあるセルの右隣のセル」を
探す方法が分かりません

Aベストアンサー

本来、以下は省略して書くことが多いのですが、明示的に書かせていただきます。

Ucase(Right(セル,2)) ->MatchCase:=False
全角半角の違いは、MatchByte:=False
末尾のyr を探すのは、What:="*yr"  (LookAt:=xlWholeも必要)
現在のコードは1回限り After:=Range("A1") 続けるなら、ActiveCell

私は、ここのカテゴリでは、質問者さんから、答えだけ書いてりゃいいのだ、というので、みなさんから評判が悪いようです。
どなたかの回答をお待ちになっても良いかと思います。

'//
Sub SearchChars()
 Dim c As Range
 With Range("A1:AB39")
 Set c = .Find( _
  What:="*yr", _
  After:=Range("A1"), _
  LookIn:=xlValues, _
  LookAt:=xlWhole, _
  SearchOrder:=xlByRows, _
  MatchCase:=False, _
  MatchByte:=False)
    If Not c Is Nothing Then
     c.Offset(, 1).Value = Range("A1").Value
    End If
 End With
End Sub
'//

本来、以下は省略して書くことが多いのですが、明示的に書かせていただきます。

Ucase(Right(セル,2)) ->MatchCase:=False
全角半角の違いは、MatchByte:=False
末尾のyr を探すのは、What:="*yr"  (LookAt:=xlWholeも必要)
現在のコードは1回限り After:=Range("A1") 続けるなら、ActiveCell

私は、ここのカテゴリでは、質問者さんから、答えだけ書いてりゃいいのだ、というので、みなさんから評判が悪いようです。
どなたかの回答をお待ちになっても良いかと思います。

'//
Sub SearchChars()
 Dim c...続きを読む

QルータのIPアドレスを変更するには?

ルータのIPアドレスを変更するにはどうすれば良いですか?
OSはWindowsXPです。
WAN側で利用しているグローバルIPアドレスと
LAN側で利用しているローカルIPアドレスの両方を変更したい
と思っております。

Aベストアンサー

No3です。
>一定時間 ルータの電源を切ったら
>グローバルIPアドレスが変更されるんですか!?

そうです、グローバルIPアドレスは有限ですので接続していない機器にまで
割り振っていられるほど有り余っては居ないのです。
ですので一定時間アクセスしていない機器のアドレスは解除されて新たに
接続された機器に振り分けます。
そういう風にして少ないアドレスを効率よく割り振っています。

実際 私は出かけるときにルータの電源を切って出かけます。
夜帰ってきたときには電源を入れると違うグローバルアドレスが割り振られています。

Qエクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ、「右詰」で移したい

以前に
エクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ移したい、ということで質問しまして、「MID関数を利用する」事で、先頭文字から一文字ずつ別々なセルに移すことが出来ましたが、スミマセンが次のような場合はどのような関数になるのでしょうか?

例えば「番地などの表示」等で1桁の場合もあれば、5桁あるいは6桁等々の場合もあるとします。これを別なセルに下一桁を合せる様にしたいのです。
例としまして
セルA1に1桁~6桁の数字(例:345678)を入力した場合、これを右側のB1には3を、同様にC1には4を、D1=5、E1=6、F1=7、G1=8を関数で入力できるようにしたい。

問題は、桁数が毎回違う場合にG1に下一桁が来るようにしたいのですがRIGHT関数では下一桁だけ応答されるのは上手くいくのですが、下二桁、三桁以上の場合には上手くいきません。
つまり「A1に789」の数字を入力したら、G1=9が、F1=8が、E1=7が応答されるようにしたいのです。
勿論、5桁の場合にはB1が空欄で、C1、D1、E1、F1、G1が埋まる様に、4桁であればB1とC1が空欄で、D1~G1が埋まるように、三桁の場合にはB1~D1が空欄でE1~G1が埋まるようにですが、出来ますでしょうか??

よろしくご教授お願いします。

以前に
エクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ移したい、ということで質問しまして、「MID関数を利用する」事で、先頭文字から一文字ずつ別々なセルに移すことが出来ましたが、スミマセンが次のような場合はどのような関数になるのでしょうか?

例えば「番地などの表示」等で1桁の場合もあれば、5桁あるいは6桁等々の場合もあるとします。これを別なセルに下一桁を合せる様にしたいのです。
例としまして
セルA1に1桁~6桁の数字(例:345678)を入力した場合、これを右側...続きを読む

Aベストアンサー

    A     B   C   D   E   F   G
1  345678   3   4   5   6   7   8
2    789               7   8   9

B1=LEFT(RIGHT(" "&$A1,6-COLUMN(A1)+1))
★右と下にコピー


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報