[[20180812182158]] 『指定文字が含まれるかの判定』(かっぱ) ページの最後に飛ぶ

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

 

『指定文字が含まれるかの判定』(かっぱ)

よろしくお願いします。

B列に文字列があり、その文字列に指定の漢字が含まれる場合
C列に判定結果ととして[〇]が表示されるように関数を作成し
たいのですが、式が思いつきません。

指定文字は漢字1文字で複数あります

B列    C列
ハイツ幸洋 〇
コーポ美幸 〇
山本ビル  
メゾン明光 〇
沢田ハイツ

上記の場合、指定文字は[幸]と[明]になります。
B列は1000行以上あり、指定文字も20文字程度あります。

C列に入る関数をご教示願います。
B列

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


 C1セル =IF(ISNUMBER(LOOKUP(99,FIND(E$1:E$2,B1))),"○","")
                                    ~~↑~~~
              指定文字の範囲はキッチリ合わせてください

   行  _____B_____  _C_  _D_ E
   1  ハイツ幸洋    ○       幸 
   2  コーポ美幸    ○       明 
   3  山本ビル                  
   4  メゾン明光    ○           
   5  沢田ハイツ                
   6  幸福明        ○           

(半平太) 2018/08/12(日) 19:51


半平太様
関数式の提示ありがとうございます

思っていたとおりの結果がでました
ありがとうございます

ところで式の中の 99 は何を指しているのですか?
(かっぱ) 2018/08/12(日) 20:12


 >ところで式の中の 99 は何を指しているのですか?

 難題ですね。

 99 は LOOKUPの第一引数で「検索値」になっています。

 第二引数はと言うと FIND(E$1:E$2,B1) の配列です。
 具体的にどんな配列かと言うと、こんなもんです。
                ↓
               {4;#VALUE!}

 その配列は何かと言えば、E1とE2に入っている漢字1文字が、
 B1セルに入っている文字列の何文字目に当たるかを表しています。

 つまり、幸は4文字目、明は発見できないのでエラーとなった。

 その数値は最大で、文字列の長さになる可能性がありますね。
 100文字目に幸が有れば {100;#VALUE!} となったことでしょう。

 でも常識的にそんな長い文字はないと踏んでいます。
 多分最長で20文字くらいなんでしょうね?

 なので、99よりはずーっと小さい数字のハズである。(これが大事です)

  {4;#VALUE!} と言う配列の中のどれを見ても99より小さいものしかない場合、
 LOOKUP関数は、そこにある数値の一番右のものをヒットします。(この場合4)

 じゃ、99じゃなくたっていいじゃないかってことになりますね。
 潔癖症の人は、先ずB列にある文字列長の最大値を調べて、
 もしそれが12文字だとしたら、99の代わりに13にすることでしょう。12.0001とするかも。

 私はずぼらなので 99 にしました。
 潔癖症じゃないけど慎重な人は 9999 くらいにするかも知れません。

 そんな訳で、99が何を指しているかを説明するのは難しいんです。大した理由がないので・・
 文字長より大きければいいんです。

(半平太) 2018/08/13(月) 00:06


 ところで、今回、上記の4とかを正確に割り出す必要はなく、
 一つでも数値があれば指定漢字が含まれているか判定できるので、
 こんなもんで良かったです。それなら少し後ろめたい99の意味を説明する羽目にも陥らなかった。
  ↓ 
  =IF(OR(ISNUMBER(FIND(E$1:E$2,B1))),"○","")  =IF(OR(INDEX(ISNUMBER(FIND(E$1:E$2,B1)),0)),"○","")
  =IF(COUNT(FIND(E$1:E$2,B1)),"○","")      =IF(COUNT(INDEX(FIND(E$1:E$2,B1),0)),"○","")
                           ↑
 ※それぞれ、Ctrl+Shift+Enterrで入力確定する。  普通にEnterで済ませたい場合はこちら(Indexをテキトーに噛ませる。)

 なお、これ以上聞かない様にお願いします(また後ろめたい気分になりますので)

(半平太) 2018/08/13(月) 06:50


半平太様
後ろめたい気持ちにさせて申し訳ありませんでした

なかなか奥深くて難しいですね
何回か読んで理解に努めます
(かっぱ) 2018/08/13(月) 07:05


コメント返信:

[ 一覧(最新更新順) ]


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