Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


70389 / 76738 ←次へ | 前へ→

【10859】Re:Vlookupについて教えてください。
回答  りん E-MAIL  - 04/2/16(月) 23:55 -

引用なし
パスワード
   ギン さん、こんばんわ。

>検索値自体が違っていました。
>このように違う検索値がある場合の回避はどのようにしたら宜しいでしょうか?
On Error で分岐するか、CountIfでチェックしてエラーを回避するか...。

CountIfで回避してみましょう。

Sub test()
  '↓ためし用
  r = 5
  rEnd = 10
  '
  For n = r To rEnd 'rは最初の行でrEndは最後の行です。
   If Application.WorksheetFunction.CountIf(Worksheets("区分") _
            .Range("A2:A700"), Cells(n, 2).Value) = 0 Then
     'なかった
     Cells(n, 1).Value = "#N/A"
   Else
     'あった
     Cells(n, 1).Value = Application.WorksheetFunction.VLookup( _
      Cells(n, 2), Worksheets("区分").Range("A2:AZ700"), 2, 0)
   End If
  Next n
End Sub

ところで、VLOOKUPでないとだめですか?

Sub test()
  Dim r1 As Range
  '↓ためし用
  r = 5
  rEnd = 10
  'チェックするのはB列,検索結果を入れるのはA列だとして
  For n = r To rEnd 'rは最初の行でrEndは最後の行です。
   'B列の内容を完全一致で検索
   On Error Resume Next
   Set r1 = Worksheets("区分").Range("A2:AZ700").Find( _
         what:=Cells(n, 2).Value, LookAt:=xlWhole)
   On Error GoTo 0
   '結果分岐(結果はA列)
   With ActiveSheet.Cells(n, 1)
     If r1 Is Nothing Then
      .Value = "#N/A"
     Else
      .Value = r1.Offset(0, 1).Value 'B列から取得
     End If
   End With
   Set r1 = Nothing '開放
  Next n
End Sub

こんな感じです。

0 hits

【10833】Vlookupについて教えてください。 ギン 04/2/15(日) 19:46 質問
【10834】Re:Vlookupについて教えてください。 りん 04/2/15(日) 21:12 質問
【10849】Vlookupについて教えてください。 ギン 04/2/16(月) 11:33 質問
【10859】Re:Vlookupについて教えてください。 りん 04/2/16(月) 23:55 回答
【10882】解決しました。 ギン 04/2/17(火) 20:14 お礼

70389 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free