• 締切済み

エクセルにて 文字列を参照し検索して値を返す方法。

ある列から文字列を参照し、参照した文字列を他の列から検索し、検索行の指定した列の値を返したいと思います。   A B C D 1 林 2 森 3 根  林 5 4 根   梨 3 例えば、B1に答えを返したいと思います。 条件は、A1の文字列(林檎)と同じ文字列のものをD列から検索し、検索されたら、その行のE列の値を返したいのです。 答えは5なるようにしたいです。 またA列の文字群は変化するので、特定な文字検索というよりは、セルにはいっている文字列を検索したいです。 たいへん困っております。分かるかたよろしくお願いします。

みんなの回答

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.2

こんにちは。 後で、考えてみたら、VLOOKUP関数でも出来ますね。 セルB1に以下の関数を設定した後、データがある行まで、コピーしてください。 =IF(ISERROR(VLOOKUP(A1,$D:$E,2,FALSE)),"",VLOOKUP(A1,$D:$E,2,FALSE))

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.1

こんにちは。 質問の意味がよく解りませんが、以下のように解析してマクロを作りました。お試しください。 >条件は、A1の文字列(林檎)と同じ文字列のものをD列から検索し、検索されたら、その行のE列の値を返したいのです。 >答えは5なるようにしたいです。 A列の文字列をD列から検索して、検索された行のE列の値を、B列に返せば良いですよね。 Sub 文字列検索()   Dim c   As Range   Dim wStr  As String   Dim wR   As Long   Dim maxR  As Long   '   Application.ScreenUpdating = False   With ActiveSheet     maxR = .Range("A" & Rows.Count).End(xlUp).Row '←A列の最大行数設定     wR = .Range("D" & Rows.Count).End(xlUp).Row   '←D列の最大行数設定     For wI = 1 To maxR       wStr = .Cells(wI, 1).Value         '←A列の文字列を順に設定       Set c = .Range("D1:D" & wR).Find(wStr)   '←D列から文字列を検索       If Not c Is Nothing Then         .Cells(wI, "B") = .Cells(c.Row, "E")  '←検索されたE列の値をB列へ返す       End If     Next   End With   Application.ScreenUpdating = True End Sub <マクロ貼付方法> (1) Alt+F11 (ツール → マクロ → Visual Basic Editor) →「挿入」→「標準モジュール」で表示される画面に貼り付け (2) 実行は、(F5を押す)又は、シート画面に戻って Alt+F8を押してマクロ一覧からマクロ名を選択して実行

関連するQ&A