回答編集履歴

2 間違いがありました。

kai_keitai

kai_keitai score 187

2017/09/17 14:07  投稿

エクセルのワークシート関数だけで実現できないかを検討しましたが、文字列の中に複数の検索条件を必要とするため、ワークシート関数では実現は不可能です。
よって、VBAで、オリジナル関数を作成して、対応する方法を推奨します。
VBAで、オリジナル関数を作成して、対応する方法を推奨します。
もし、結果が、D列にあるのなら、可能性のある学部を、D列に入力しておく必要があります。
そして、下の様なFunction関数を作成しましょう。
```ExcelVBA
Option Explicit
Public Function GET学部(学部 As String) As String
   Dim x As Long
   Dim i As Long
   Dim F As Long
   
   x = Workbooks("Sample1.xlsm").Worksheets("Sheet1").Range("D1").End(xlDown).Row
   
   ReDim 略称(1 To x) As String
   
   For i = 1 To x
       略称(i) = Workbooks("Sample1.xlsm").Worksheets("Sheet1").Cells(i, 4).Value
   Next i
   
   For i = 1 To x
       F = 0
       On Error Resume Next
       F = Application.WorksheetFunction.Search(略称(i), 学部, 1)
       Err.Clear
       If F > 0 Then
           GET学部 = 略称(i)
           Exit For
       End If
   Next i
   
End Function
```
そしたら、シートに関数を入れて結果を出します。
![イメージ説明](5b26307bfff9d4a1dd83b9eafa3998d1.png)
空白で結果がでているのは、D列に学部の登録が無いためです。
下に追加することによって、表示されるようになります。
1 誤字と、ソースコード挿入しました。

kai_keitai

kai_keitai score 187

2017/09/16 22:12  投稿

エクセルのワークシート関数だけで実現できないかを検討しましたが、文字列の中に複数の検索条件を必要とするため、ワークシート関数では実現は不可能です。
よって、VBAで、オリジナル関数を作成して、対応する方法を推奨します。
もし、結果が、D列にあるのなら、可能性のある学部を、D列に入力しておく必要があります。
そして、書きの様なFunction関数を作成しましょう。
そして、の様なFunction関数を作成しましょう。
```ExcelVBA
Option Explicit
Public Function GET学部(学部 As String) As String
   Dim x As Long
   Dim i As Long
   Dim F As Long
   
   x = Workbooks("Sample1.xlsm").Worksheets("Sheet1").Range("D1").End(xlDown).Row
   
   ReDim 略称(1 To x) As String
   
   For i = 1 To x
       略称(i) = Workbooks("Sample1.xlsm").Worksheets("Sheet1").Cells(i, 4).Value
   Next i
   
   For i = 1 To x
       F = 0
       On Error Resume Next
       F = Application.WorksheetFunction.Search(略称(i), 学部, 1)
       Err.Clear
       If F > 0 Then
           GET学部 = 略称(i)
           Exit For
       End If
   Next i
   
End Function
```  
 
そしたら、シートに関数を入れて結果を出します。
![イメージ説明](5b26307bfff9d4a1dd83b9eafa3998d1.png)
空白で結果がでているのは、D列に学部の登録が無いためです。
下に追加することによって、表示されるようになります。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る