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

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

新規登録して質問してみよう
ただいま回答率
85.35%
マクロ

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

Q&A

解決済

4回答

4474閲覧

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

sincos41

総合スコア17

マクロ

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

0グッド

2クリップ

投稿2017/09/15 07:31

編集2017/09/15 07:45

###前提・実現したいこと
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関数など組み合わせて色々試してみましたが、上手く表示させることができずに苦戦しております。
ですので、未熟な私ですがご教示頂ければと思います。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

szk.

2017/09/15 08:09

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

回答4

0

ベストアンサー

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

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

投稿2017/09/15 11:11

yamashita_yuich

総合スコア316

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sincos41

2017/09/19 07:18

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

0

なんらかのリストから別のリストを元に検索したい時、よく使われるのは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/15 10:11

編集2017/09/15 10:12
takito

総合スコア3116

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sincos41

2017/09/19 07:21

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

0

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

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

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

ExcelVBA

1Option Explicit 2 3Public Function GET学部(学部 As String) As String 4 Dim x As Long 5 Dim i As Long 6 Dim F As Long 7 8 x = Workbooks("Sample1.xlsm").Worksheets("Sheet1").Range("D1").End(xlDown).Row 9 10 ReDim 略称(1 To x) As String 11 12 For i = 1 To x 13 略称(i) = Workbooks("Sample1.xlsm").Worksheets("Sheet1").Cells(i, 4).Value 14 Next i 15 16 For i = 1 To x 17 F = 0 18 On Error Resume Next 19 F = Application.WorksheetFunction.Search(略称(i), 学部, 1) 20 Err.Clear 21 If F > 0 Then 22 GET学部 = 略称(i) 23 Exit For 24 End If 25 Next i 26 27End Function

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

投稿2017/09/16 13:09

編集2017/09/17 05:07
kai_keitai

総合スコア344

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sincos41

2017/09/19 07:20

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

0

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

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

excel

1=regexp(A2,"(大学大学院|大学)(.+)(研究科|学部|部卒)",1) 2 3```のように活用します。 4微妙に学部や学が入るかは入らないかの基準があいまいなので、式の中の | 区切りで前後の絞り込みを工夫してみて下さい。 5いざとなったらテキスト複写ののちに置き換え機能で変えることになるでしょう。

投稿2017/09/15 10:42

seastar3

総合スコア2287

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sincos41

2017/09/19 07:20

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問