人に聞けない痔の悩み、これでスッキリ >>

こんにちは、ExcelVBAの初心者です。
上司から検索サイトでの検索結果に出てくる上位URLをコピー&ペーストするように指示を受けたのですが、作業が大変で全然進まず困っています。
もしからた、ExcelVBAで解決できるのではと、ご相談させて頂きました。

具体的には以下のような作業を手作業でやっています。
これを自動化することは可能でしょうか?

1.エクセルに検索するキーワードがセル(A列)ごとにおさめられています。
(セルには2つのキーワードが入っていてand条件となります)
2.それをコピーしてyahooかgoogleで検索をします。
3.検索結果の上位3つまでのURLをコピーして、キーワードの右側のセルにペーストしています。(スポンサードサーチなど広告系は含みません)


【イメージです】
        A            B              C  
  ――――――――――――――――――――――――――
1|カメラ SONY     |________|______
2|電子レンジ シャープ|________|______
3|冷蔵庫 日立     |________|______


            ↓


        A            B              C  
  ――――――――――――――――――――――――――
1|カメラ SONY     |www.sony.jp/dslr|www.sony.co.jp
2|電子レンジ シャープ|healsio.jp     |www.sharp.co.jp/sup
3|冷蔵庫 日立     |________|______



素人で実現可能なのかも分かりませんが、もし分かる方がいらっしゃいましたら何卒お知恵をお貸しください。
どうかよろしくお願いいたします。

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

A 回答 (4件)

利用規約に抵触しているようです。



接続に関する問題: ネットワークで表示される「申し訳ありません」ページ
http://www.google.co.jp/support/websearch/bin/an …
サービス利用規約
http://oshiete1.goo.ne.jp/kotaeru_reply.php3?q=5 …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
やっぱりなかなか上手くいかないものですね。

VBAでは無理ということが分かっただけでも良かったです。
地道に手作業でやっていきます。

ご親切にいろいろありがとうございました(^^

お礼日時:2010/02/21 22:15

Dim i As Integer



myUrl = "http://www.google.co.jp/"
For Each myWindow In CreateObject("Shell.Application").Windows
With myWindow
'//Google
If .LocationURL = myUrl Then
For Each c In Sheets("Sheet1").Range("A1:A10")
i = 0

上記の部分を下記に変えてください。
検索キーワードが、連続で入力されている範囲を取得します。
数千行あると、どれほど時間がかかるか解りません。
検索キーワードの数を減じた、ダミーシートでテストしてください。

Dim i As Integer
Dim drng As Range

With Sheets("Sheet1")
Set drng = .Range("A1", .Range("A1").End(xlDown))
End With

myUrl = "http://www.google.co.jp/"
For Each myWindow In CreateObject("Shell.Application").Windows
With myWindow
'//Google
If .LocationURL = myUrl Then
For Each c In drng
i = 0

この回答への補足

回答ありがとうございます。
10行以上目移行も動いてくれるようになりました。
ただ、しばらく検索(50~100行)くらい進むと下記の英文が表示され、検索が出来なくなってしまいます。(自動化に対してのエラーでしょうか?)
これは、もう仕方ないのでしょうか?
それともYahooなどですと起こらないのでしょうか?

-----------------------------
We're sorry...
... but your computer or network may be sending automated queries. To protect our users, we can't process your request right now.
See Google Help for more information.
-----------------------------

補足日時:2010/02/21 13:22
    • good
    • 0

とりあえず、検索結果のURLを3つ抽出します。


適当に条件を付けています。
厳密に上位の3つというわけではありません。

Sheet1のA1:A10に検索キーワードと仮定
検索キーワードが数千行もあると、どれほど時間がかかるか解りません。

Sub test1()
Dim myWindow As Object
Dim myUrl As String
Dim tmp As Object
Dim myLink As Object
Dim c As Range
Dim i As Integer

myUrl = "http://www.google.co.jp/"
For Each myWindow In CreateObject("Shell.Application").Windows
With myWindow
'//Google
If .LocationURL = myUrl Then
For Each c In Sheets("Sheet1").Range("A1:A10")
i = 0
'//Google検索
.Document.all.Tags("input").Item("q").Value = c.Value
.Document.all.Tags("input").Item("btnG").Click
Call webReadyState(myWindow)

'//検索結果抽出
For Each myLink In .Document.Links
If InStr(myLink, "google") = 0 Then
If InStr(myLink, "%") = 0 Then
If Right(myLink, 1) = "/" Then
i = i + 1
c.Offset(, i).Value = myLink
End If
End If
End If
If i = 3 Then Exit For
Next myLink
.GoBack
Call webReadyState(myWindow)
Next
Exit For
End If
End With
Next myWindow
Set tmp = Nothing
End Sub

Sub webReadyState(myWindow)
With myWindow
Do While .Busy = True
DoEvents
Loop
Do While .ReadyState <> 4
DoEvents
Loop
End With
End Sub

この回答への補足

回答ありがとうございます。
希望通りの動きでした!(^^

ただ、どうしても10行目で止まってしまいます。
10行目以降も取得を自動で進めることが出来ないでしょうか?

補足日時:2010/02/20 22:39
    • good
    • 0

とりあえず下記のようにしてみました。


IEでGoogleを開いている状態で実行してください。

Dim myWindow As Object
Dim myUrl As String
Dim tmp As Object
Dim i As Integer

myUrl = "http://www.google.co.jp/"
For Each myWindow In CreateObject("Shell.Application").Windows
With myWindow
'//Google
If .locationurl = myUrl Then
'//Google検索
.Document.all.Tags("input").Item("q").Value = Range("A1").Value
.Document.all.Tags("input").Item("btnG").Click

Do While .Busy = True
DoEvents
Loop
Do While .ReadyState <> 4
DoEvents
Loop

'//検索結果抽出
If .locationurl Like "http://www.google.co.jp/search*" Then
Set tmp = .Document.getElementsByTagName("a")
For i = 0 To tmp.Length - 1
If tmp(i).innertext Like "*ソニー" Then
MsgBox Range("A1").Value & vbLf & tmp(i).innertext & vbLf & tmp(i).href
End If
Next i
End If
.GoBack
Exit For
End If
End With
Next myWindow

Set tmp = Nothing

この回答への補足

回答ありがとうございます(^^
イメージしているものにすごく近いです。
ボックスに入ってくるURLがB,C,D列に自動的に入っていくように出来ますでしょうか?
あと、Excelに入ったの検索キーワードが数千行あるので、そのキーワードがgoogleの検索ボックスに自動的に入力されURLを取得し終わったら、また次の行のキーワードを、、、 と一連の作業がすべて自動的で出来るでしょうか?
難しいことをいってすみません。

補足日時:2010/02/20 09:23
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

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

QエクセルVBAで検索結果のリンク先URL取得について

エクセルのたとえばA列にヤフーかグーグルで検索したい飲食店(値)の名前が1,000行入っています。
それを上から順番に検索していきます。この作業はloopやfor ~ nextで対応可能だと思います。問題はここからです。
その検索した文字を、ヤフーかグーグルで検索します。検索結果で、「ヤフーロコ」、「ホットペッパー」のリンク先URL、例えばURLに”loco.yahoo.co.jp/”や”hotpepper.jp/”が入っているもののみを、B列、C列に抽出します。もし、ヤフーロコやホットペッパーの両方に、該当の飲食店がなけれが、うち1つか、もしくは該当なしとして空白のまま、次の列に行き、また検索を続けていくというものです。
自動化処理は可能でしょうか。

Aベストアンサー

こんばんは。

試しに、googleで調べてみました。
気になるレストラン名「ローターオクセン」(もうかつてのお店はなくなっていると思いつつ……)
を検索してみました。
「あった!」
 おまけに、”loco.yahoo.co.jp/”や”hotpepper.jp/”が入っているのでした。
これなら、できますね。(^^; 

VBA勉強中さんのVBAのお勉強のタシになるか分かりませんが、ちょっとコードを考えてみました。
実践的ではありませんし、雑な内容で、まだまだ修正の余地はありますが、基本的な考え方は分かっていただけるように思います。一応、検索は、1ページだけです。この辺りは、今のところ暗中模索です。

エラーを考慮していませんので、万が一には、ずれる可能性もありますので、検索値は、再び、セルに戻すようにしたほうがよいです。1,000件以上ですと、本当は、以下のようなコードはアクセス方法から変えないとダメだとは思いますが、当面のコードとしては、考え方は分かるはずです。

'//
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private objIE As InternetExplorer
''参照設定:Microsoft Internet Controls
Private Hpp As Boolean
Private Lya As Boolean
Sub MainAccess()
 Dim srcTxt As String
 Dim n As Variant
 Const BASE = "https://www.google.co.jp/" 'グーグル検索
 Cells(1, 1).Resize(, 5).Value = Array("店名", "loco.Yahoo", "URL1", "ホットペッパー", "URL2")
 Set objIE = New InternetExplorer
 With objIE
  .Visible = True ''安全だと分かったら、False 可
  .Navigate2 BASE
  Do While .Busy Or .ReadyState <> READYSTATE_COMPLETE
   DoEvents
  Loop
 End With
 For Each n In Range("A2", Cells(Rows.Count, 1).End(xlUp))
  ieSearch n.Value, objIE
 Next
 objIE.Quit
 Set objIE = Nothing
End Sub
Sub ieSearch(ByVal srcTxt As String, objIE As InternetExplorer)
 Dim srchBx As Object
 Dim srchBtn As Object
 Dim iSrc As Variant
 Dim v As Variant
 Dim buf As String
 Dim iHtml1 As String
 Dim iHtml2 As String
 Dim i As Long
 Lya = False: iHtml1 = ""
 Hpp = False: iHtml2 = ""
 With objIE
  Set srchBx = .Document.getElementById("lst-ib")
  srchBx.Value = srcTxt
  srchBx.form.Submit
  Sleep 1000 'ウェイトが重すぎるかも?しかし、抜けることもある
  Do
   DoEvents
  Loop Until .ReadyState = READYSTATE_COMPLETE
  Set iSrc = .Document.getElementsByClassName("g")
  If iSrc.Length > 0 Then
   For Each v In iSrc
    If InStr(1, v.innerHTML, "loco.yahoo.co.jp", 1) > 0 Then
     Lya = True
     buf = Mid(v.innerHTML, InStr(1, v.innerHTML, "href=""", 1) + 6)
     iHtml1 = Left(buf, InStr(1, buf, " target", 1) - 2) & vbCrLf
    End If
    If InStr(1, v.innerHTML, "hotpepper.jp", 1) > 0 Then
     Hpp = True
     buf = Mid(v.innerHTML, InStr(1, v.innerHTML, "href=""", 1) + 6)
     iHtml2 = Left(buf, InStr(1, buf, " target", 1) - 2) & vbCrLf
    End If
    buf = ""
   Next
   i = Cells(Rows.Count, 2).End(xlUp).Row + 1
   'Cells(i, 1).Value = srcTxt
   Cells(i, 2).Value = Lya
   Cells(i, 3).Value = iHtml1
   Cells(i, 4).Value = Hpp
   Cells(i, 5).Value = iHtml2
  End If
 End With
End Sub

こんばんは。

試しに、googleで調べてみました。
気になるレストラン名「ローターオクセン」(もうかつてのお店はなくなっていると思いつつ……)
を検索してみました。
「あった!」
 おまけに、”loco.yahoo.co.jp/”や”hotpepper.jp/”が入っているのでした。
これなら、できますね。(^^; 

VBA勉強中さんのVBAのお勉強のタシになるか分かりませんが、ちょっとコードを考えてみました。
実践的ではありませんし、雑な内容で、まだまだ修正の余地はありますが、基本的な考え方は分かっていただけるよう...続きを読む

Qvbaを使ってグーグル検索をしたい

エクセルのマクロを使用して
グーグル検索を出来るようにしたいです。

処理としまして、プログラムを起動すると
ユーザーフォームが起動して、テキストボックスがあり
テキストボックス内に検索したいキーワードを入力して
ボタンをクリックしたら
IEが起動して自動で検索結果が表示されるようにしたいのですが

テキストボックスに入力したキーワードを
どうしても反映させることが出来ない状態です。

出来れば、検索結果の一番下のほうに
「他のキーワード」と言うのがありまして
ダイエットで検索すると
「他のキーワード」が

ダイエット日記
ダイエット方法
食べ合わせダイエット
骨盤ダイエット
ダイエット レシピ
ダイエット 運動
どうぶつダイエット
ダイエット ブログ
バナナ ダイエット
炭水化物ダイエット

といったキーワードが出てくるのを
メモ帳に自動で書き出すようにも出来ればありがたいです。

わかりにくい説明かもしれませんが
よろしくお願いいたします。

Aベストアンサー

 TextBox1 にキーワードを入力し CommandButton1 をクリックしたら、デスクトップの "Google 他のキーワード.txt" に「他のキーワード」が追記されていきます。

'-------------------------------------------------------------------
Private Sub CommandButton1_Click()
 Dim MyKeyWord As String
 Dim objIE As Object
 Dim i As Integer
 Dim MyDir As String
 Dim MyTxt As String
 Dim j As Integer
 Dim HisKeyWord As String
 MyKeyWord = TextBox1.Text
 
'Internet Explorer の起動
 Set objIE = CreateObject("InternetExplorer.Application")
 With objIE
  
'キーワードの入力
  .navigate "ht" & "tp://w" & "ww.google.com/"
  While .Busy Or .ReadyState <> 4: DoEvents: Wend
  .document.forms.Item(0)(1).Value = MyKeyWord
  .document.forms.Item(0)(2).Click
  While .Busy Or .ReadyState <> 4: DoEvents: Wend
  For i = 0 To .document.all.Length - 1
   If .document.all.Item(i).className = "e" Then Exit For
  Next

'メモ帳の保存先フォルダとファイル名の指定
  MyDir = Environ("USERPROFILE") & "\デスクトップ\"
  MyTxt = "Google 他のキーワード.txt"
  
'メモ帳に自動で書き出す
  Open MyDir & MyTxt For Append As #1
  Print #1, "【キーワード】" & MyKeyWord
  If i = .document.all.Length Then
   Print #1, "「他のキーワード」はございません。"
  Else
   For j = 1 To 10
    HisKeyWord = .document.all.Item(i + j * 2 + 5).outerText
    If HisKeyWord = "12345678910次へ" Then Exit For
    Print #1, HisKeyWord
   Next
  End If
  Print #1, Chr(10)
  Close #1
  
'Internet Explorer の終了と テキストボックス の初期化
  .Quit
 End With
 Set objIE = Nothing
 TextBox1.Text = ""
 TextBox1.SetFocus
End Sub

 TextBox1 にキーワードを入力し CommandButton1 をクリックしたら、デスクトップの "Google 他のキーワード.txt" に「他のキーワード」が追記されていきます。

'-------------------------------------------------------------------
Private Sub CommandButton1_Click()
 Dim MyKeyWord As String
 Dim objIE As Object
 Dim i As Integer
 Dim MyDir As String
 Dim MyTxt As String
 Dim j As Integer
 Dim HisKeyWord As String
 MyKeyWord = TextBox1.Text
 
'Internet Explorer ...続きを読む

QエクセルでハイパーリンクのURLだけを文字抽出したい

ホームページからコピーし、エクセルにリンク文字をペーストすると、青文字(文字にハイパーリンクがかかった状態)が貼りつきます。その張り付いた文字の、リンク先URLを文字としてほしい(http○○・・)のですが、できますか?
青文字を右クリックしてハイパーリンクの編集からURLは見られるのですが、たくさんのリンクリストからURLだけを抽出するのが大変なので、よい方法がありましたらお願いします。

Aベストアンサー

No3 です。
サブアドレスの存在を忘れていました。
訂正です。

Public Sub GetURL()
  Dim h As Hyperlink
  Dim a As String
  Dim s As String
  For Each h In ActiveSheet.Hyperlinks
    a = h.Address
    s = h.SubAddress
    If s <> "" Then
      a = a & "#" & s
    End If
    h.Range.Offset(0, 1) = a
  Next
End Sub

QExcel内での検索結果をシートに出力したい

こんばんは。いつも大変お世話になっています。

Excel2003にて、あるシートの中から
対象の文字列があるかどうか検索をしました。
検索時に「すべて検索」にすると、
全結果が表示されますよね。
その内容をExcelのシートに出力することは
できないでしょうか・・・。

どのセルの位置にその対象文字列がいてということを
報告書として作成したいのです。

イメージがうまくかけませんが、どなたかよい方法を
ご存知でしたら教えてください。
何か記述で足りないものがあれば、すぐに記述いたします。

Aベストアンサー

丸投げですか(^^;
以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。

勉強になりませんので解説や再修正はしません。もし修正が必要ならご自身でお願いします。

Sub Macro1()
Dim ret
Dim r As Range
Dim adr As String
Dim cnt As Long
Dim psw As Boolean
Dim mySht, adSht, ws As Worksheet
  Set mySht = ActiveSheet
  ret = Application.InputBox("検索文字列を入力してください")
  If TypeName(ret) <> "Boolean" Then
    With mySht.Cells
      Set r = .Find(ret, LookIn:=xlValues, lookat:=xlPart)
      If Not r Is Nothing Then
        adr = r.Address
        cnt = 1
        For Each ws In Worksheets
          If ws.Name = "検索結果" & ret Then
            psw = True
            Exit For
          End If
        Next ws
        If psw Then
          Set adSht = ws
          adSht.Cells.ClearContents
        Else
          Set adSht = Worksheets.Add
          adSht.Name = "検索結果" & ret
        End If
        adSht.Cells(cnt, 1).Value = r.Value
        adSht.Cells(cnt, 2).Value = adr
        Do
          Set r = .FindNext(r)
          If r.Address = adr Then
            Exit Do
          Else
            cnt = cnt + 1
            adSht.Cells(cnt, 1).Value = r.Value
            adSht.Cells(cnt, 2).Value = r.Address
          End If
        Loop
      End If
    End With
  End If
  mySht.Activate
End Sub

丸投げですか(^^;
以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。

勉強になりませんので解説や再修正はしません。もし修正が必要ならご自身でお願いします。

Sub Macro1()
Dim ret
Dim r As Range
Dim adr As String
Dim cnt As Long
Dim psw As Boolean
Dim mySht, adSht, ws As Wo...続きを読む

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

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

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

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

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

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

宜しくお願いします。

Aベストアンサー

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

でどうでしょうか?

QExcelで○○を含むという条件にてvlookup処理(比較)できるでしょうか?

説明が難しいのですが、以下のようなAとBの2つのシートがありまして、BシートのA列にある条件がAシートのA列の歯抜の状態で入力されてます。これにBシートのB列に、AシートのB列を表示したいという状況があります。

具体的なイメージは、以下の通りです。

===========================================
Aシート
 A        B
1 山田真太郎 東京
2 鈴木波奈子 名古屋
3 斉藤ミツル 大阪
-------------------------------------------
Bシート
 A  
1 藤ミツ
2 奈子
3 田真太
===========================================


BシートのB列に関数などを利用して以下のように表示させたいです。
==========================================
 A     B
1 藤ミツ 大阪
2 奈子  名古屋
3 田真太 東京
==========================================

このように、「セルにある言葉を含む」という条件にて、Vlookupを使ったような計算式というのを組む事ができるでしょうか?

私が感じているBシートのB1に入れる関数イメージ
=VLOOKUP((*A1*),A!$A$1:$B$3,2)

何か良い方法があればご教授ください。

説明が難しいのですが、以下のようなAとBの2つのシートがありまして、BシートのA列にある条件がAシートのA列の歯抜の状態で入力されてます。これにBシートのB列に、AシートのB列を表示したいという状況があります。

具体的なイメージは、以下の通りです。

===========================================
Aシート
 A        B
1 山田真太郎 東京
2 鈴木波奈子 名古屋
3 斉藤ミツル 大阪
-------------------------------------------
Bシート
 A  
1 藤ミツ
2 奈子
3 田真...続きを読む

Aベストアンサー

NO2です。
因みに=VLOOKUP("*"&A1&"*",A!A:B,2,FALSE)でも可能ですのでお試しください。

Qネットの情報を自動収集するプログラムを作りたい。

インターネットでの情報収集を、プログラムで自動的に行いたいと考えています。
この場合、どのような勉強が必要なのか教えていただけませんか。おそらく何通りかの答えがあると思いますが、複数の回答を期待しています。
また、ヒントとなる主なコマンドやキーワードがあれば教えてください。自習の参考にさせていただきます。

プログラム経験は、10年以上前にBASICを多少かじった程度ですが、これを機会に、WEB関連のプログラムをがんばって勉強しようと思います。

Aベストアンサー

ウェブサイトのHTMLを解析してデータを抜き出すことを「スクレイピング」と言います。「引っ掻き取る」という意味。

必要な機能は、
(1)ブラウザのシミュレーション(Form送信やCookie処理など)機能
(2)HTMLを解析する機能

私は、Ruby言語+Mechanize(1の機能)+Nokogiri(2の機能)でやってます。Perlで同じようなことを行うことも出来ます。
「Ruby Mechanize Nokogiri」か「Perl Mechanize」で検索するとサンプルなどがあると思います。

例えば、クレジットカードの利用明細取得サンプル。
http://d.hatena.ne.jp/otn/20090815/p1


他のアプローチとしては、VBとかVBScriptでIEを自動運転する(1の機能)。ただしVBに2の機能のライブラリがあるのかどうか知りません。
IEの自動運転はRubyでも出来るので、Ruby+IE(1)+Nokogiri(2)でも出来ますね。

QVBAを使ってHTMLソースから特定の文字列を抽出したいと思っています

VBAを使ってHTMLソースから特定の文字列を抽出したいと思っています。
正規表現を利用してタグに挟まれた文字を抽出したいのですがうまくいきません。
タグごと抽出する方法でも構わないので教えてください。

例えば
<a href="www.yahoo.com△">○○○</a>   ・・・<1>
※△は(www.yahoo.com)+(半角数字1文字)
※○○○は1文字以上の全角文字

このようなパターンの文字列(<1>を丸ごと)を抜き出すには
どのような正規表現を書けばよいでしょうか?
単に<a href ではじまって </a>  で終わる文字列であれば
<a href.*</a>
で良いと思うのですが、もう少し範囲を絞れば目的の文字列だけを抽出できるので
ぜひ実現させたいと思っています。宜しくお願いします。

Aベストアンサー

 正規表現による抽出にこだわらないでしたら、
>例えば
の答えは、[Links プロパティ] により、 下記のような方法で
>タグごと抽出する
こともできますし、
>もう少し範囲を絞れば目的の文字列だけを抽出
することもできます。

Sub test()
 Dim objIE As Object
 Dim i As Long
 Set objIE = CreateObject("InternetExplorer.Application")
 With objIE
  .navigate "http://www.yahoo.com/"
  While .Busy Or .ReadyState <> 4: DoEvents: Wend
  With .Document
   For i = 0 To .Links.Length - 1
    Cells(i + 1, 1) = .Links(i).outerHTML
    Cells(i + 1, 2) = .Links(i).outerText
   Next
  End With
 End With
 objIE.Quit
 Set objIE = Nothing
End Sub

 正規表現による抽出にこだわらないでしたら、
>例えば
の答えは、[Links プロパティ] により、 下記のような方法で
>タグごと抽出する
こともできますし、
>もう少し範囲を絞れば目的の文字列だけを抽出
することもできます。

Sub test()
 Dim objIE As Object
 Dim i As Long
 Set objIE = CreateObject("InternetExplorer.Application")
 With objIE
  .navigate "http://www.yahoo.com/"
  While .Busy Or .ReadyState <> 4: DoEvents: Wend
  With .Document
   For i = 0 To .Links.Lengt...続きを読む

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

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

Aベストアンサー

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

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

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)


人気Q&Aランキング