• 締切済み

エクセル関数で複数の特定文字を抽出したい

A列に区分を J列の文字列内から B列に種別を K列の文字列内から それぞれ抽出したいのてすが、 FindやIF関数を組み込んでも どうもうまくいきません。 例) A列セルには「新規・変更・削除」 B列セルには「登録・確認・承認」などを抽出文字としたい時・・ J2セルに「変更申請」 K2セルに「システム登録」 の場合、A2に「変更」 B2に「登録」 J3セルに「新規受付」 K3セルに「承認完了」 とある場合、A3に「新規」 B3に「承認」 と表示させたい といった形式です。 ご教示いただけませんでしょうか。 よろしくお願い致します。

みんなの回答

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.5

条件的に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.4

[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)
回答No.3

添付図参照 1.次の各セルにそれぞれ右側の式を入力して右に2列オートフィル  ̄ ̄ M2: =1/(LEN($I2)-LEN(SUBSTITUTE($I2,M$1,"")))  ̄ ̄ Q2: =1/(LEN($K2)-LEN(SUBSTITUTE($K2,Q$1,""))) 2.範囲 M2:S2 を下方に必要なだけオートフィル

回答No.2

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)
回答No.1

VLOOKUP関数はいかがでしょうか。 IF関数と組み合わせれば様々な条件に対応できます。

関連するQ&A