次の方法で共有

完全一致する単語のみをカウントするようにしたい

Anonymous
2022-06-12T11:16:19+00:00

ファイルはこちらにあります。

現在添付の図のように、B列に含まれる Attributeの一部とC4:F4に含まれる単語に一致するものがある場合、1を返すような数式をセルに入れています。 例えば、C5には =COUNTIF($B5,"*"&C$4&"*") という数式を入れています。

ここで問題なのは、C4で示される"Cap"は実際はB5に含まれていないのですが、単語の一部であるため、C5では1がカウントされてしまうことです。望ましいのはC5は0が返されることです。そしてBにCap のみが含まれる時だけ、C列でカウントしてほしいのです。C列に含まれる単語はすべてコンマで区切られております。

"Knitted Cap"は"Cap"ではないことをExcelに教える必要があるのですが、この場合どのような方法を取ればよいでしょうか。セルを分割してしまうことも含め、良い方法があればご教示いただければ幸いです。

Microsoft 365 と Office | Excel | ビジネス向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

4 件の回答

並べ替え方法: 最も役に立つ
  1. Andreas Killer 144.1K 評価のポイント ボランティア モデレーター
    2022-06-13T10:06:47+00:00

    この応答は自動的に翻訳されました。これは文法上の誤りや奇妙な言い回しにつながる可能性があります。

    残念ながら、OPにはカンマと「白いキャップ」という単語の間にスペースがあるため、解決策は機能しませんでした。

    image

    アンドレアス。

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Andreas Killer 144.1K 評価のポイント ボランティア モデレーター
    2022-06-12T11:43:29+00:00

    この応答は自動的に翻訳されました。これは文法上の誤りや奇妙な言い回しにつながる可能性があります。

    image

    C5: =","&SUBSTITUTE(B5," ","")&","

    下にドラッグ

    D5: =COUNTIF($C 5,"*,"&SUBSTITUTE(D$4," ","")&",*")

    右下にドラッグ

    数式は英語のシステムからのものです、あなたはあなたの言語にそれらを翻訳し、引数の間の区切り文字をあなたのものに置き換える必要があるかもしれません。
    エクセル数式の概要

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  3. ひまじん 17,185 評価のポイント
    2022-06-13T13:09:07+00:00

    ご指摘ありがとうございます。

    ご指摘に気づかず、その前に、修正案を追記したつもりなのですが、時間的には 3分ほど後になってしまったようです。

    前回の返信に追記した数式3も検証していただければ嬉しいです。

    併せて、質問者さんにも、前回返信の追記をご覧いただければ幸いです。

    0 件のコメント コメントはありません
  4. ひまじん 17,185 評価のポイント
    2022-06-13T07:53:02+00:00

    こんにちは。

    「完全一致」で結果を求めたいということは、スペースも含め、大文字と小文字も区別したいということでしょうか?。

    もしそうでしたら、以下のような数式でも良いかと思いますが、いかがでしょう?。一例です。

    ・数式1

    =IF($B5="","",COUNT(FIND(","&C$4&",",","&$B5&",")))

    図1は、この数式1を C5セルに入れ、これを右方向(列方向)に F5セルまでコピーし、C5:F5 のセル範囲を選択したまま下方向(行方向)に必要なだけコピーした結果です。

    尚、数式1では IF関数の働きで、B列に文字列が入っていない状態では空白(空白の文字列)が表示されるようになっています。

    なので、数式1は行方向に何行分でも余分にコピーしておくことが出来ます。

    もし、余分なコピーが必要ないのでしたら、IF関数を除外した数式2のような書き方も出来ます。(これが基本形です。)

    ・数式2

    =COUNT(FIND(","&C$4&",",","&$B5&","))

    ・図1:数式1を使用して 100行分コピーしています。8行目以降は「完全一致」しない場合の例です。

    画像

    <数式2の動作概要>:数式1の概要は省略します。

    他の方も書かれている通り、まずは B列の検索対象文字列と 4行目の検索文字列の双方の前後に "," を付加します。

    これにより、双方の文字列の区切りを明確にして検索できるようにしています。

    次に、双方の文字列(スペースなども含む)そのままに、大文字と小文字も区別するため FIND 関数を使い「完全一致」する文字位置を求めています。

    一致した場合に返される文字位置は数値ですので、COUNT 関数でその個数(この場合は 0(不一致)または 1(一致)にしかならない)を表示しています。

    Windows11 と Excel2021 の組み合わせで動作確認しています。

    よろしければ、お試しになってみてください。

    ご参考になれば幸いです。

    <説明文の修正>

    <数式2の動作概要>の、最後の箇所の説明文に足りない文言が有ったため、その箇所を修正しました。

    <追記>

    提示されておられる表の B5セルの文字列には、"," と "White Cap" という文字列の間に「半角スペース」が一つ入っているのを見落としていました。大変失礼いたしました。

    区切り文字としては "," だけではなく「半角スペース」を含む ", " なのでしょうか?。

    その場合には、数式1を以下の数式3に修正してみてください。

    ・数式3

    =IF($B5="","",COUNT(FIND(","&C$4&",",","&SUBSTITUTE($B5,", ",",")&",")))

    動作確認済みです。

    0 件のコメント コメントはありません