• ベストアンサー

VBAにて検索して検索結果を表記

はじめまして。 VBAにてファイルAとBがあり、ファイルAにファイルBのデータがあるかを検索して、 ある場合はファイルAの検索した値が入力されているセルの二つ隣のセルに 「あり」、ない場合は「なし」と表記したいのですが、どうしたら可能でしょうか。 FINDで検索して、IF関数NOTHINGとElseで場合分けまでできましたが、 表記できませんでした。 また、VLOOKUPで検索した場合は、IF関数の場合分けもできませんでした。 ご教授願います。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

VBAの質問でしたら、必ず、コードは書いてください。そうしないと、本当にVBAを書いているか分かりません。一応、何個あるのか数えていますが、ある・なしの表示の時に上書きしています。 Sub TestFind()  Dim Bk1 As Workbook  Dim Bk2 As Workbook  Dim c As Variant, r As Range  Dim rng1 As Range, rng2 As Range  Dim FirstAdd  Set Bk1 = ThisWorkbook  Set Bk2 = Workbooks("Book1")  With Bk1.ActiveSheet   Set rng1 = .Range("A1", .Cells(Rows.Count, 1).End(xlUp)) 'A列  End With  Set rng2 = Bk2.ActiveSheet.Cells '検索される側の場所    Application.ScreenUpdating = False  For Each r In rng1   Set c = rng2.Cells.Find( _   What:=r.Value, _   LookIn:=xlValues, _   LookAt:=xlWhole, _   MatchCase:=True)   If Not c Is Nothing Then    r.Offset(, 2).Value = 1    FirstAdd = c.Address    Do Until c Is Nothing     Set c = rng2.FindNext(c)     r.Offset(, 2).Value = r.Offset(, 2).Value + 1     If c.Address = FirstAdd Then Exit Do    Loop    FirstAdd = ""   End If   If r.Offset(, 2).Value = "" Then    r.Offset(, 2).Value = "なし"   Else    r.Offset(, 2).Value = "あり"   End If  Next  Application.ScreenUpdating = True  Set rng1 = Nothing: Set rng2 = Nothing  Set Bk1 = Nothing: Set Bk2 = Nothing End Sub

その他の回答 (2)

  • soixante
  • ベストアンサー率32% (401/1245)
回答No.3

#1の者です。 ずいぶん時間が経ってしまいましたが、もう解決してますかね? " の入っている文字列ということですが、 たとえば、 "a" と記載されているセルを判定するなら、クオーテーションを二重にしてやればよいです。 =COUNTIF(範囲,"""a""") でカウントできますよ。 "a" を 前後2箇所の "" で挟んでますから、a の前には、" が3つ、a の後ろにも " が3つです。

  • soixante
  • ベストアンサー率32% (401/1245)
回答No.1

VBAじゃなくてはだめですか? 普通にシンプルに関数では? ファイルA Book1 ファイルB Book2 それぞれのSheet1 のA列にデータが入っているとして、 ファイルAの C2セルに、 =IF(COUNTIF([Book2]Sheet1!$A:$A,A2)>0,"あり","なし") で下に引っ張って見るとか。 どうしてもVBAにしたいなら上記のことをコードにしてみたらよいのでは? 難しくしないでいいと思いますよ。

hhhooo
質問者

お礼

ご教授、ありがとうございます。 こちらの説明不足がありました。 「"」が入っている文字列を入力できる方法があればご教授願います。 Excel2003にて「""」の間に「"」があるとエラーとなってしまいました。 ご指南いただいたコードの入力方法をお教え願えないでしょうか。 よろしくお願いします。

関連するQ&A