• 締切済み

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

前回の質問が とてもわかりにくかったようなので、 改めて質問させていただきます。 ご教示いただいた方々には 本当に申し訳ありませんが、 意図と違う動きになってしまっていたので・・。 とはいえ、皆さま ありがとうございました。 今後の参考にはしたいと思います! さて、本題ですが 前回の質問が 伝わりにくかったようなので、 配列を直してみました。 まず、そもそものデータが A2~L?まで入っています。 ※1行目は項目として使用しているので、 2行目からデータが入っているイメージです。 そこから、 M1に「区分」・N1に「種別」・・と追加します。 M列に同じ行のD列セルの内容から一部を判定し、抜き出し N列でも同じように 同行のE列セルの内容から一部を判定し、抜き出す といった動きをさせたいと悩んでいます。 特定文字が1種類であれば Find関数を用いて"*●●*"などの指定で抜き出せるのですが、 特定文字が複数ある場合、 どうやったらうまく表示させられるでしょうか? 例えば、 DとEには文章(のような文字列)が入るので そこから一定の単語を抜き出し、 区分と種別として使用できる表に更新したいと考えているわけです。 ご面倒かと存じますが、 良案をご教示いただけますと とても助かります! 是非、よろしくお願い致します。

noname#228034
noname#228034

みんなの回答

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.7

ANo.4です。 他の回答やその補足も読ませて頂きました。 あなたがやりたいことは私や他の回答者の回答で十分可能です。 ただ、式をそのままコピペではなく、実際の環境・データに合わせて変更する必要があります。 今までの回答をしっかり理解して式を変更してください。 それが難しいようでしたら、望んでいる結果も含めたサンプルデータを、ちゃんと解るように提示したうえで説明をするか、お金を払ってプロにやってもらいましょう。 冷たいようですが、文字と小さな画像でしかやり取りできないこのサイトでは限界があります。

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

>M列に ブランド名3種 か その他 の4種類を抜き出して表示させたい 例えばデータNo.7のブランド名(D8セルの値)とは「ABC」ですよね? と云うことは「ABC」をそのままM8へ代入するのですか? データNo.9のD10セルは「その他」と思いますのでM10へはD10と同じ「その他」になるのでM2の数式は次のようになります。 =D2 M3以下はM2を下へコピーするだけで良いでしょう。 >N列に 受付・承認・マスター登録・システム登録 などのE列に含まれる一部の文字を抜き出して表示させたい 前述のようにE8セルの値が「ブランド登録新規受付」でN8には「受付」を抽出したいということですか? N列へ抜き出す文字列は「受付」、「承認」、「マスター登録」、「システム登録」の何れかということなら可能性はあります。 前回の質問(https://okwave.jp/qa/q9364009.html)の回答No.5に提示した数式を応用すれば良いと思います。 =INDEX({"登録","確認","承認"},1,MAX(INDEX((FIND({"登録","確認","承認"},K2&{"登録","確認","承認"})<LEN(K2))*COLUMN($A2:$C2),0))) 修正箇所はあなたの応用力で判断してください。 K2 → E2 $A2:$C2 → $A2:$D2 {"登録","確認","承認"} → {"受付","承認","マスター登録","システム登録"}

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

>いったん、エクセルをそのままコピペしてみます。 各行のフィールド(列)区切りが無いので逆効果です。 A列:日付 B列:担当者 C列:申請内容 D列:処理内容 E列~J列:他1~6 K列:処理月 L列:区分 M列:種別 のように見えます。 「DとEには文章(のような文字列)が入るので」と列がズレているように思われます。 A列に#として番号が付いていればM列とN列に数式を設定することに矛盾は無いのですが、2行目以降のD列とE列の区切りが分からないので説明になりません。 また、処理月、区分、種別についても2行目以降のデータにフィールド区切りが無いので補足としては不完全です。 更に、質問文の「一定の単語を抜き出し」という記述の「単語」が補足されていません。 最後に回答No.3の数式からあなたの目的に合う形に修正することについては検討されたでしょうか? 回答の数式を丸写しで数式の処理内容を理解しないままで使うことは後日に禍根を残すので数式を理解した上で使うようにしてください。 現状の補足内容では丸写し用の数式を提示できません。

noname#228034
質問者

補足

みなさんの回答でご教示いただいた数式を、それぞれサンプルに当てはめてみてのですが、どうもうまく表示されませんでした。 →当方の当てはめが うまく適用できていなかったのかもしれませんが・・ ちなみに、 サンプルでは D列には ブランド名が3つと その他 E列には 処理内容として、新規受付・システム登録 など それを M列に ブランド名3種 か その他 の4種類を抜き出して表示させたい N列に 受付・承認・マスター登録・システム登録 などのE列に含まれる一部の文字を抜き出して表示させたい というのがイメージするものです。 抜き出したい文字数は、全て2文字!などというわけではなく 固定数ではないのですが・・ 可能でしょうか?

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.4

具体例を提示できない理由でもあるのでしょうか? あいまいな説明に回答者が振り回されているように見えます。 こんな感じで如何でしょう。添付の図を見てください。 セルP2:R5を表示用データとして使用しますので、図の通りに入力しておいてください。 #Q2、R2セルには半角スペースを入れておいてください。 セルM2: =VLOOKUP(SUMPRODUCT((COUNTIF(D2,"*"& $Q$3:$Q$5 &"*")>0)*$P$3:$P$5),$P$2:$Q$5,2,FALSE) セルN2: =VLOOKUP(SUMPRODUCT((COUNTIF(E2,"*"& $R$3:$R$5 &"*")>0)*$P$3:$P$5),$P$2:$R$5,3,FALSE)

noname#228034
質問者

お礼

ご連絡がとても遅くなってしまい、大変失礼しました。

noname#228034
質問者

補足

体調を崩し、お礼と補足が遅くなってしまい申し訳ありません。 また、サンプルの画像を貼ろうと下準備をしたものの、どうやって画像を貼ったら良いのかわからず・・・ いったん、エクセルをそのままコピペしてみます。 ※見にくいかもしれませんが、知識不足ですみません。 # 日付 担当者 申請内容 処理内容 他1 他2 他3 他4 他5 他6 処理月 区分 種別 1 7/10 Aさん Aブランド登録 新規受付 ・・・ 7月 ブランドA 受付 2 7/13 Bさん Aブランド登録 申請承認 ・・・ 7月 ブランドA 承認 3 7/21 Cさん BBブランド変更登録 変更受付・・・ 7月 ブランドBB 受付 4 7/22 Cさん Aブランド登録 システム登録 ・・・ 7月 ブランドA システム登録 5 7/30 Aさん Aブランド登録 内容確認 ・・・ 7月 ブランドA 確認 6 8/1 Dさん BBブランド登録 申請承認 ・・・ 8月 ブランドBB 承認 7 8/5 Cさん ABCブランド登録 新規受付 ・・・ 8月 ブランドABC 受付 8 8/14 Bさん ABCブランド登録 申請承認 ・・・ 8月 ブランドABC 承認 9 8/16 Aさん その他 マスター登録 8月 その他 マスター登録 10 8/18 Cさん ABCブランド登録 システム登録 ・・・ 8月 ブランドABC システム登録 こんなイメージです。 関数での対応で実現可能でしょうか?

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

回答No.2に対して補足が無いので勝手解釈の表を作成して検証しました。 貼付画像はExcel 2013で処理したものです。 「一部を判定」の文字列を前回の質問に提示された"*変更*"、"*新規*"、"*削除*"の組み合わせと"*登録*"、"*確認*"、"*承認*"の組み合わせです。 M2=IF(OR(COUNTIF(D2,{"*変更*";"*新規*";"*削除*"})),INDEX({"新規";"変更";"削除"},MAX(INDEX((FIND({"新規";"変更";"削除"},D2&{"新規";"変更";"削除"})<LEN(D2))*ROW(A$1:A$3),0))),"") N2=IF(OR(COUNTIF(E2,{"*登録*";"*確認*";"*承認*"})),INDEX({"登録";"確認";"承認"},MAX(INDEX((FIND({"登録";"確認";"承認"},E2&{"登録";"確認";"承認"})<LEN(E2))*ROW(A$1:A$3),0))),"") 数式内の{"新規";"変更";"削除"}と{"登録";"確認";"承認"}は固定値の配列データですが予め何処かのセル範囲に入力されていればセル範囲に置き換え可能です。

noname#228034
質問者

お礼

体調を崩し、お礼と補足が遅くなってしまい申し訳ありません。 また、サンプルの画像を貼ろうと下準備をしたものの、どうやって画像を貼ったら良いのかわかりませんでした。知識不足ですみません。

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

前回の質問(https://okwave.jp/qa/q9364009.html)と曖昧さは同じようなものです。 模擬データを10行ほど提示してください。 現状の質問文では回答困難です。 >Find関数を用いて"*●●*"などの指定で抜き出せるのですが、 それは誤りです。 FIND関数の検索文字列にワイルドカードは使えません。 ●●が含まれるか否かの判定は検索文字列を●●として対象から位置を返します。 無い場合は#VALUE!エラーが返ります。 >DとEには文章(のような文字列)が入るので >そこから一定の単語を抜き出し、 DとEの具体的な文字列を10例(10組の例)と「一定の単語」とはどのような文字列なのかを提示しないと数式を組み立てて検証できません。 後出しジャンケン的な質問文になります。

noname#228034
質問者

お礼

ご連絡がとても遅くなってしまい、申し訳ありません。

noname#228034
質問者

補足

体調を崩し、お礼と補足が遅くなってしまい申し訳ありません。 また、サンプルの画像を貼ろうと下準備をしたものの、どうやって画像を貼ったら良いのかわからず・・・ いったん、エクセルをそのままコピペしてみます。 ※見にくいかもしれませんが、知識不足ですみません。 # 日付 担当者 申請内容 処理内容 他1 他2 他3 他4 他5 他6 処理月 区分 種別 1 7/10 Aさん Aブランド登録 新規受付 ・・・ 7月 ブランドA 受付 2 7/13 Bさん Aブランド登録 申請承認 ・・・ 7月 ブランドA 承認 3 7/21 Cさん BBブランド変更登録 変更受付・・・ 7月 ブランドBB 受付 4 7/22 Cさん Aブランド登録 システム登録 ・・・ 7月 ブランドA システム登録 5 7/30 Aさん Aブランド登録 内容確認 ・・・ 7月 ブランドA 確認 6 8/1 Dさん BBブランド登録 申請承認 ・・・ 8月 ブランドBB 承認 7 8/5 Cさん ABCブランド登録 新規受付 ・・・ 8月 ブランドABC 受付 8 8/14 Bさん ABCブランド登録 申請承認 ・・・ 8月 ブランドABC 承認 9 8/16 Aさん その他 マスター登録 8月 その他 マスター登録 10 8/18 Cさん ABCブランド登録 システム登録 ・・・ 8月 ブランドABC システム登録 こんなイメージです。 関数での対応で実現可能でしょうか?

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.1

》 改めて質問させていただきます え?「前回」の回答者を無視して「改めて」はないでせう! 「前回」のスレッドに、何処がどのように「意図と違う動きになってしまっていた」のか補足されたい!

noname#228034
質問者

補足

ご連絡が大変遅くなり、また、前回の質問も含め、わかりにくい説明だったこと、反省しております。申し訳ありませんでした。

関連するQ&A

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

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

  • 任意の複数のセルから文字を抽出する法

    エクセルの勉強中です。 質問があります。 エクセルには縦の列と横の行があるようですが、 その任意のセルに入った文字列を抽出することは可能でしょうか。 例えばB列に入った5行目、8行目、11行目、14行目といったようにある配列に並んだセル内の文字を別の新規のD列に順番にD1、D2、D3、D4のセルに並べていくという方法などです。 同じファイルでなくても別の任意のファイル内の指定の列に順に入れていくといった作業などです。 同様にC列に入った4行目、8行目、12行目、16行目内のセル内の文字を今度は 新規のE列のE1,E2,E3,E4に順に並べていくなど、上記のような作業を一度に行えればそのような方法があるのか、お知りになる方よろしくお願いします。 その目的の列ごとに行っていく方法でもかまいません。

  • エクセル 特定の文字の間を抜き出し

    こんにちは! エクセルの文字の抜き出しについて教えて頂けませんか! 1セル内に数箇所抜き出したい文字があります。 抜き出したい文字は A列にあり【◎◎◎】 と すみつき括弧に囲まれているんですが、 それをB列 、C列、D列に抜き出したいと思います。 詳しい方、よろしくお願いします!!

  • エクセルの関数(抽出)について

      1  2   3   4  5 A   あ   ko   ▲ ■  B   か   sa C   もへ  we D   あ   ty E   てろ   lii F   ぎ   loer G   か   ttg H   あ   rer 上のような表があったときに、A4のセル(▲)に「あ」と入れると、 A5のセル(■)に『rer』と入るような関数(又はそれに代わる方法)を ご教示ください。 やりたいこと: 2列目の中に、▲と完全一致する値(又は文字列。以下同じ。)が存在するとき、 同じ列の3列目の値を返したい。 ただし、2列目には完全一致する値が何度も登場する可能性があり、 2列目に▲と完全一致する値が複数存在する場合は、その内一番下の行 のものを選び、同じ行の3列目の値を■に返したい。 条件: ・可能であれば、2列目をキーにした並び替えなどは行いたくない。 ・現状のデータは、3000行程度のデータ量であるが、今後じょじょに増えていく。 以上です。 説明が明瞭でなく、イメージがお伝えできていないかも知れませんが、 どうかご教示頂きたく、なにとぞよろしくお願い致します。

  • 複数行を特定の列の各セルの中にある特定の文字列でソートする

    複数行を特定の列の各セルの中にある特定の文字列でソートしてその特定の文字のみが含まれる行のみ取り出す方法って簡単にできますか? たとえばA1からF100までのセルでC列のセルに特定の文字列が含まれる場合その行を集めて残りはそのしたの行に置き換えるとか。 特定の文字列はセルの文字列の中のどの部分にあるかは任意とします。よろしくおねがいします。 イージス

  • Excelで特定文字を数える

    Excelを使っています。 かなりのデータ(行・列ともに)があるのですが、 それぞれのセルの文字列の中にある”・”の数を数えて 別のセルに表示させたいのです。 文字列操作の関数に、文字列の中から特定文字を探し出し その位置を知らせる、というものは見つかったのですが、 上記のような条件に当てはまるものはみつかりませんでした。 どういった方法があるでしょうか。 よろしくお願いします。

  • エクセルでのデータの抽出

    エクセル2007で教えていただきたいのですが、a1からc1セルに特定の文字列が 入っていてa2からc2セルにも特定の文字列が入っています。 行1に入っている文字列が「あ」で、且つ行2に入っている文字列が「い」を満たす、 その下の行3に入っている数値の合計は、どうすれば求められるでしょうか。 ご教授お願い致します。

  • エクセルで文字列の中の特定の文字の抽出

    お世話になります。 エクセルで、B列のセルの文字列の中に特定の文字 (例えば文字列abcdefの特定の文字cd)があったら A列のセルにOKという文字を出すということはできますか?

  • EXCELの関数について

    いつもお世話になっています。 EXCEL2000で 01の行に「A、B、C、D、E」という文字を適当な順番に打って、最終的に列がZほどいったときに「ABCDE」の中でもっとも多く使われた文字を特定のセルに表示させることは可能でしょうか? また二番目に多かった文字、三番目に・・・。ということもできるのでしょうか? 補足などがあればすぐに回答したいと思います。 よろしくお願いします。

  • 【エクセル】特定の文字列(番号)の行だけ抽出したい

    現在資料を作っていて、またもや困ったことがあったので教えてください。 特定の文字が含まれる行のデータを抽出するにはどうしたらいいのでしょうか。 具体的にいうと ____|A|B|C|D|E| [01]|F|1|0|3|5| [02]|G|0|2|5|7| [03]|H|0|3|4|8|    中略 [21]|F|0|0|9|6| [22]|G|6|4|5|1| [23]|H|3|3|2|2|    中略 [31]|F|2|2|4|6| [32]|G|5|3|7|9| [33]|H|8|2|6|4|    以下略 *[]の中身は行番号 一番上段のA B C D Eは列の軸 |はセルの区切りを示している のような表でGのBのところ(行番号が10n+2のところのA列)だけのデータを合計したいのです。 つまり上の表でいえば =A2+A22+A32+A42+A52…(=0+6+5+…)ということをしたいのですが 数が600行近くあるので手入力だとかなり面倒くさいのです。 SUM関数を使うのかなとも思いましたが、それでもセルの指定の面倒くささは変わらないし… 何か簡単にできるようにする方法がありましたらご教授お願いします。

専門家に質問してみよう