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に関連する人気のQ&A

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

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

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

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

QExcelで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|
------------------------------

お世話になります。
Excelシート上のA列にIPアドレスが並んでおり、
第1オクテットから第4オクテットは3桁までの数で
それぞれ"."で区切られています。
各オクテットの数値をB列~E列に分けて入れるには
B列~E列にどのような関数を入れたらよいでしょうか、お知恵を拝借したく お願いいたします。

↓理想図です

------------------------------
A        |  B | C | D | E  |
------------------------------
1.2.3.4      | 1 | 2 | 3 | 4 |
---------------------...続きを読む

Aベストアンサー

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)

QExcelのVBAを使った自IPアドレスの取得

2日悩みましたが、解決策が見つからないため質問させて頂きます。
現在、ExcelのVBAを使った表を作成しております。
編集者が誰なのかをはっきりさせるため、項目の新規追加・情報の削除を行った編集者のIPアドレスを履歴として残したいと思っています。(閲覧履歴は不要です。)
そのため、編集者PCのIPアドレスを取得してそれを履歴一覧に残したいのですが、この方法がわかりません。
いろいろと探しましたが、WMI(?)やWSH(?)等の、私の理解をはるかに超えるものしか見つからず困っております。
このようなことはできないのでしょうか?
もし可能であれば、教えて下さい。
環境は
OS:Windows XP
Excel2000です。
宜しくお願いします。

Aベストアンサー

取得したいアダプタのDefaultGatewayが判っているならWMIを使ったこんなのはどうでしょう。
1つのアダプタに複数のIPが割り当てられている場合等は考慮していません。
また、サンプルなので変数宣言やエラー処理も適当です。

Sub Sample()
 strDefaultGateway = "192.168.50.254" '←DefaultGatewayがコレのIPを調べる
 strIp = "該当無し"

 Set objNic = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where (IPEnabled = TRUE)")
 For Each oneNic In objNic
  'DefaultGatewayの設定が無いNICは無視
  If IsError(oneNic.DefaultIPGateway(0)) = False Then
   strChk = oneNic.DefaultIPGateway(0)
   If InStr(strChk, strDefaultGateway) > 0 Then
    strIp = oneNic.ipaddress(0)
    Exit For
   End If
  End If
 Next
 MsgBox "IPアドレス:" & strIp

End Sub

取得したいアダプタのDefaultGatewayが判っているならWMIを使ったこんなのはどうでしょう。
1つのアダプタに複数のIPが割り当てられている場合等は考慮していません。
また、サンプルなので変数宣言やエラー処理も適当です。

Sub Sample()
 strDefaultGateway = "192.168.50.254" '←DefaultGatewayがコレのIPを調べる
 strIp = "該当無し"

 Set objNic = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where ...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

Qvlookup関数で検索値を含む文字列を検索する方法

vlookup関数で例えば E1のセルに=vlookup(D1,A:C,3,false)とした場合、D1が佐藤であれば、A列に「佐藤」がある場合には当然、「佐藤」がある行の3列目の値が返されますが、「佐藤」はなく「佐藤A」や「A佐藤」がある場合にもこれらがある行の値を返して欲しいのですが、いい方法はありませんでしょうか。*を使ってできると思ったのですがうまくいきません。上記例で、=vlookup("*佐藤*",A:C,3,false)とすればできますが、*佐藤*の部分はD1の引用を利用したいのです。
 よろしくお願いします。

Aベストアンサー

=VLOOKUP("*"&D1&"*",A:C,3,FALSE)

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Q複数の文字列のいずれかが含まれていたらTRUEを返す関数について

複数の文字列のいずれかが含まれていたらTRUEを返す関数について
エクセル2003を使用しています。
B列に例えば住所が入力されていて、「東京都北区」「千代田区」「東村山市」等いくつかの文字列のいずれかが含まれていたら、A列にTRUEを返すということをしたいのですが方法がわかりません。
単純なことのような気がするのですがどうしても思いつきません。よろしくお願いいたします。

Aベストアンサー

こうかなあ。。。
A2セル
=OR(SUBSTITUTE(B2,$D$2:$D$4,"",1)<>B2)
[Ctrl]+[Shft] +[Enter] で確定、配列数式です({}で囲まれる)
下へオートフィル

D2:D4に文字列を入力しておく


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

人気Q&Aランキング

おすすめ情報