質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.60%

  • Excel

    1468questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • マクロ

    217questions

    定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Excelにて文字列の中から該当する言葉があった場合、マスタから抽出

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 894

sincos41

score 11

前提・実現したいこと

Excelの関数もしくはマクロで実現したいです。
下記のようにA列に出身の大学(院)・学部(科)があり、C列には学部、D列には学部を略称した文字があります。
A列の中にC列の学部が入っていれば、B列にD列の学部を略称した文字を入れたいです。もし該当するものが無ければ、『無し』とB列に入力したいです。

<現状> (A列やC列・D列は500以上のデータがあります)(...は列を整えるために入れたので、実際のExcelでは入っていません)
A列.....................................B列.........C列...........D列
大阪大学外国語学部卒.............................医学部..........医学
長野大学社会福祉部卒.............................国際教養学部....国際
京都大学大学院工学研究科修了...................音楽学部........音楽
北海道大学法学部卒................................外国語学部.......外国
北海道大学大学院医学研究科修了.................健康科学部.......健康
九州大学教育学部卒.................................応用化学部.......化学
福岡大学応用化学部卒...............................社会福祉学部....福祉
一橋大学法学部卒...................................人間社会学部......社会
..........................................................法学部............法学
..........................................................工学研究科.......工学
..........................................................医学研究科.......医学

↓ ↓ ↓

<こうしたい>
A列.....................................B列.........C列...........D列
大阪大学外国語学部卒................外国........医学部..........医学
長野大学社会福祉部卒................福祉........国際教養学部....国際
京都大学大学院工学研究科修了.....工学.........音楽学部........音楽
北海道大学法学部卒...................法学........外国語学部.......外国
北海道大学大学院医学研究科修了...医学........健康科学部.......健康
九州大学教育学部卒...................教育.........応用化学部.......化学
福岡大学応用化学部卒.................化学........社会福祉学部....福祉
一橋大学法学部卒.......................法学.......人間社会学部......社会
..........................................................法学部............法学
..........................................................工学研究科.......工学
..........................................................医学研究科.......医学

様々なサイトを参考にしながら、FIND関数やVLOOK関数、ISNUMBER関数など組み合わせて色々試してみましたが、上手く表示させることができずに苦戦しております。
ですので、未熟な私ですがご教示頂ければと思います。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • szk.

    2017/09/15 17:09

    今の<現状>と条件からすると<こうしたい>のB列は全て「無し」になるかと思います。パターン化できないのでもう少し実データに基づいて記載してください。あとB列に入れる文字は、D列と同じか「無し」になるということでよいでしょうか。最後にmarkdownは表が使えるので一覧はそれを使ってください。

    キャンセル

回答 4

checkベストアンサー

+2

下記関数をB2セルに貼り付け、他の行にコピペすれば期待している結果になると思います。

=IFERROR(LOOKUP(0,0/FIND($C$1:$C$11,A2),$D$1:$D$11),"無し")

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/19 16:18

    教えてくださり、ありがとうございます。シンプルで汎用性があるのでベストアンサーにさせて頂きました。

    キャンセル

+2

なんらかのリストから別のリストを元に検索したい時、よく使われるのはindexmatchの組み合わせです

今回のケースではこんな感じに組み合わます

=INDEX($D$1:$D$11,MATCH(TRUE,INDEX(ISNUMBER(FIND($C$1:$C$11,$A1)),),0))

これをB1に入れて下方向へコピーします

ご提示のデータではD列に「医学」が2つあって重複しているので、医学研究科を「医研」などにした方がよいかも?

「無し」を表示したい場合を考えてみましたが、ちょっと思いつかないので強引なやりかたで、、、

=IF(ISNUMBER(MATCH(TRUE,INDEX(ISNUMBER(FIND($C$1:$C$11,$A1)),),0)),INDEX($D$1:$D$11,MATCH(TRUE,INDEX(ISNUMBER(FIND($C$1:$C$11,$A1)),),0)),$E$1)

E1セルに「無し」を入れておけば、これでとりあえず欲しい結果は出てます

もっとよい方法が他の方から出るかもしれませんがご参考まで

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/19 16:21

    回答ありがとうございます。他の方がシンプルで使いやすい回答を頂きましたので、そちらで今回は解決致しました。takitoさんの回答もスキル向上のため勉強させて頂きます、

    キャンセル

+1

Excelのワークシート関数で正規表現を使う の記事を参考に時前の正規表現関数REGEXEC()をVBAのmodule1に用意します。

そして、例えばB2セルになら、

=regexp(A2,"(大学大学院|大学)(.+)(研究科|学部|部卒)",1)

のように活用します。
微妙に学部や学が入るかは入らないかの基準があいまいなので、式の中の | 区切りで前後の絞り込みを工夫してみて下さい。
いざとなったらテキスト複写ののちに置き換え機能で変えることになるでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/19 16:20

    回答ありがとうございます。他の方がシンプルで使いやすい回答を頂きましたので、そちらで今回は解決致しました。seastar3さんの回答もスキル向上のため勉強させて頂きます、

    キャンセル

+1

VBAで、オリジナル関数を作成して、対応する方法を推奨します。

もし、結果が、D列にあるのなら、可能性のある学部を、D列に入力しておく必要があります。

そして、下の様なFunction関数を作成しましょう。

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

そしたら、シートに関数を入れて結果を出します。
イメージ説明
空白で結果がでているのは、D列に学部の登録が無いためです。
下に追加することによって、表示されるようになります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/19 16:20

    回答ありがとうございます。他の方がシンプルで使いやすい回答を頂きましたので、そちらで今回は解決致しました。kai_keitaiさんの回答もスキル向上のため勉強させて頂きます、

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.60%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Excel

    1468questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • マクロ

    217questions

    定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。