[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『指定文字が含まれるかの判定』(かっぱ)
よろしくお願いします。
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.