- 締切済み
エクセル関数で複数の特定文字を抽出したい
A列に区分を J列の文字列内から B列に種別を K列の文字列内から それぞれ抽出したいのてすが、 FindやIF関数を組み込んでも どうもうまくいきません。 例) A列セルには「新規・変更・削除」 B列セルには「登録・確認・承認」などを抽出文字としたい時・・ J2セルに「変更申請」 K2セルに「システム登録」 の場合、A2に「変更」 B2に「登録」 J3セルに「新規受付」 K3セルに「承認完了」 とある場合、A3に「新規」 B3に「承認」 と表示させたい といった形式です。 ご教示いただけませんでしょうか。 よろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- bunjii
- ベストアンサー率43% (3589/8249)
条件的にA2セルの数式をB2セルへコピーするのは難しいのでA2セルとB2セルを夫々設定します。 A2=INDEX({"新規","変更","削除"},1,MAX(INDEX((FIND({"新規","変更","削除"},J2&{"新規","変更","削除"})<LEN(J2))*COLUMN($A2:$C2),0))) B2=INDEX({"登録","確認","承認"},1,MAX(INDEX((FIND({"登録","確認","承認"},K2&{"登録","確認","承認"})<LEN(K2))*COLUMN($A2:$C2),0))) A3:B3以下はA2:B2セルを下へコピーすれば良いでしょう。 但し、J列とK列は夫々検出すべき文字列が必ず1個のみ含まれるものとします。 エラー処理を必要とするときは状況を補足してください。
- msMike
- ベストアンサー率20% (364/1804)
[No.3]に、書き漏らしていたステップ3を追加します。 3.次の各セルにそれぞれ右側の式を入力して下方に必要なだけオートフィル  ̄ ̄ A2: =INDEX($M$1:$O$1,MATCH(1,M2:O2))  ̄ ̄ B2: =INDEX($Q$1:$S$1,MATCH(1,Q2:S2))
- msMike
- ベストアンサー率20% (364/1804)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Excelは操作したことがないど素人だが・・・。私なら、VBAで関数を書く。 関数名:WordSearch() 仕_様:WordSearch("単語1;単語2;・・・単語n",文字列) 働_き:第2引数内に存在する第一引数内の単語を戻す。 これなら、添付図のように”変更”と”登録”の存在をどっちもチェックできる。また、色々と応用も効く。ということで、私なら、VBAで関数を書きます。 Public Function WordSearch(ByVal strWords As String, ByVal strText As String) As String Dim I As Integer Dim N As Integer Dim strWord As String Dim strList() As String strList = Split(strWords, ";") N = UBound(strList) For I = 0 To N If InStr(1, strText, strList(I)) Then WordSearch = strList(I) End If Next I End Function
- yumi0215
- ベストアンサー率30% (1335/4411)
VLOOKUP関数はいかがでしょうか。 IF関数と組み合わせれば様々な条件に対応できます。