[[20190606150048]] 『ある範囲内に部分一致するセルはあるかどうか判定』(おかゆ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ある範囲内に部分一致するセルはあるかどうか判定する』(おかゆ)

A列に長い文字列、B列に短めの文字列が入っています。
A列のそれぞれのセルについて、B列のいずれかのセルと部分一致するならC列に1、そうでなければ空欄という処理を考えていますがうまくいきません。
A列にB列の文字列が含まれる場合の規則性がないため、
LEFT関数、MID関数などを使い完全一致させCOUNTIF関数を使う方法が使えません。
どのような関数を使えばよいのでしょうか?

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 =SUMPRODUCT(COUNTIF(A1,"*"&B$1:B$100&"*")*(B$1:B$100<>""))
 ではどうか?
 B$1:B$100部分をB列に入力されている範囲にする (1行目から20行目まで入力されているならばB$1:B$20)と
 *(B$1:B$100<>"")はいらなくなる。
(ねむねむ) 2019/06/06(木) 15:28

 おっと上の式だと、A列の文字列にB列の複数の文字列が含まれていると1よりも大きくなる。
 =MIN(1,SUMPRODUCT(COUNTIF(A1,"*"&B$1:B$100&"*")*(B$1:B$100<>"")))
 と修正してくれ。
(ねむねむ) 2019/06/06(木) 15:32

誠にありがとうございます。
=MIN(1,SUMPRODUCT(COUNTIF(A1,"*"&B$1:B$100&"*")))
うまく機能しました、大変助かりました。

ちなみに大変初歩的な質問となり恐縮なのですが、
=MIN(1.COUNTIF(A1,"*"&B$1:B$100&"*"))
ではいけない理由はなんなのでしょうか?
実際これだとうまくいかないのですが、どうしても理由が理解できず。。。
(おかゆ) 2019/06/06(木) 16:47


失礼しました。コンマがピリオドとなっていました。
=MIN(1,COUNTIF(A1,"*"&B$1:B$100&"*"))
です。
(おかゆ) 2019/06/06(木) 16:53

 これだとB列が空白の場合に**で検索をかけることになり、どんな場合にも合致してしまうため。
(ねむねむ) 2019/06/06(木) 17:31

返信有難うございます。
なるほど、検証してみます。
勉強になりました。
(おかゆ) 2019/06/07(金) 10:03

 >=MIN(1,SUMPRODUCT(COUNTIF(A1,"*"&B$1:B$100&"*"))) 
 >うまく機能しました
 >=MIN(1,COUNTIF(A1,"*"&B$1:B$100&"*")) 
 >ではいけない理由はなんなのでしょうか?

 なぜ SUMPRODUCT が必要なのかが分からない、ということ?

 以上、確認だけ
(笑) 2019/06/07(金) 11:30

 笑さん、ご指摘ありがとう。
 おかゆさん、勘違いしていた。
 >これだとB列が空白の場合に**で検索をかけることになり、どんな場合にも合致してしまうため。
 これは
 *(B$1:B$100<>"")
 を付ける理由だった。

(ねむねむ) 2019/06/07(金) 11:34


 >COUNTIF(A1,"*"&B$1:B$100&"*")
 の結果は
 COUNTIF(A1,"*"&B$1&"*")
 COUNTIF(A1,"*"&B$2&"*")
 COUNTIF(A1,"*"&B$3&"*")
  〜
 COUNTIF(A1,"*"&B$100&"*")
 の集合したもの(配列)となり、通常の式ではその中の一つの値しか持ってこれない。
 なのでSUMPRODUCT関数でその配列の結果を合計している。
(ねむねむ) 2019/06/07(金) 11:36

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.