- 締切済み
エクセルにて 文字列を参照し検索して値を返す方法。
ある列から文字列を参照し、参照した文字列を他の列から検索し、検索行の指定した列の値を返したいと思います。 A B C D 1 林 2 森 3 根 林 5 4 根 梨 3 例えば、B1に答えを返したいと思います。 条件は、A1の文字列(林檎)と同じ文字列のものをD列から検索し、検索されたら、その行のE列の値を返したいのです。 答えは5なるようにしたいです。 またA列の文字群は変化するので、特定な文字検索というよりは、セルにはいっている文字列を検索したいです。 たいへん困っております。分かるかたよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- pkh4989
- ベストアンサー率62% (162/260)
こんにちは。 後で、考えてみたら、VLOOKUP関数でも出来ますね。 セルB1に以下の関数を設定した後、データがある行まで、コピーしてください。 =IF(ISERROR(VLOOKUP(A1,$D:$E,2,FALSE)),"",VLOOKUP(A1,$D:$E,2,FALSE))
- pkh4989
- ベストアンサー率62% (162/260)
こんにちは。 質問の意味がよく解りませんが、以下のように解析してマクロを作りました。お試しください。 >条件は、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を押してマクロ一覧からマクロ名を選択して実行