- ベストアンサー
エクセルで文字の検索
例えば以下のような数値データの中から「A」または「B」または「C」を検索して、その文字数を取り出したいのですが、FIND関数の検索文字列にOR関数を使ってA、B、Cを指定すれば、エラーになります。 この場合使える関数があれば教えていただきたいです。 よろしくお願いします。 123A456 123B456 123C456
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
解答No2です。 式を少し変形すればよいでしょう。 =IF(COUNTIF(A1,"*A*"),"A","")&IF(COUNTIF(A1,"*B*"),"B","")&IF(COUNTIF(A1,"*C*"),"C","")
その他の回答 (7)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 横からお邪魔します。 すでに色々回答が出ていますのd、 参考程度で目を通してみてください。 (参考になるかどうか判りません) 検索文字の出現順や出現個数は無視して、 結局検索対照文字がある場合は表示させ、ない場合は表示させない方法です。 ↓の画像のように検索文字を別表に入力し、あればその文字を表示させるようにしてみました。 かなり泥臭い方法です・・・ B2セルに =IF(ISNUMBER(FIND($D$2,A2)),$D$2,"")&IF(ISNUMBER(FIND($E$2,A2)),$E$2,"")&IF(ISNUMBER(FIND($F$2,A2)),$F$2,"") という数式を入れ、オートフィルで下へコピーしています。 尚、セル内に検索文字があれば表示される順は 別表の左からになります。 以上、長々と書きましたが 参考になれば幸いです。 的外れなら読み流してくださいね。m(__)m
お礼
ご丁寧に画面ショットまでありがとうございました。応用で使えそうです。ありがとうございました。
[回答番号:No.5]の変更、 E2: =LEFT(SUBSTITUTE(A2,B2,""),D2) を次式に変更しておきます。(上のままでもOKですが、式を短くするために) E2: =LEFT(C2,D2)
お礼
わざわざありがとうございました。
ステップ・バイ・ステップ方式ですが… A B C D E 1 供試データ 文字前数字 文字以降データ 文字桁 文字 2 123A456 123 A456 1 A 3 123B456 123 B456 1 B 4 123C456 123 C456 1 C 5 34ABC567 34 BC567 3 ABC 6 1234ab5 1234 ab5 2 ab B2: {=LEFT(A2,MATCH(TRUE,(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))>="A",0)-1)} (配列数式) C2: =SUBSTITUTE(A2,B2,"") D2: =MIN(FIND({1,2,3,4,5,6,7,8,9,0},C2&1234567890))-1 E2: =LEFT(SUBSTITUTE(A2,B2,""),D2)
お礼
ご回答いただきありがとうございます。配列の概念が分かっていないので勉強したいと思います。ありがとうございました。
- mt2008
- ベストアンサー率52% (885/1701)
> 非常にすみません。文字数でなくて、文字(AかBかC)を取り出したかったのですが、その場合でもう一度ご教授いただけませんでしょうか。 質問は出来るだけ正確にお願いします。 ABCを複数含む「123A1CA12B」と言う文字列が在った場合、欲しいのは「ABC」ですか、「ACAB」ですか? それとも、ABCは常に1つだけしか文字列には存在し無いと言う条件ですか?
- MackyNo1
- ベストアンサー率53% (1521/2850)
>文字数でなくて、文字(AかBかC)を取り出したかったのですが、 FIND関数を使うなら以下のような関数になります。 =INDEX({"","A","B","C"},MAX(ISNUMBER(FIND({"","A","B","C"},A1))*{1,2,3,4}))
お礼
ありがとうございます。いろいろなやり方があるのですね。。。うらやましいです。ISNUMBERと配列を勉強します。ありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
次のような式にすればよいでしょう =COUNTIF(A1,"*A*")+COUNTIF(A1,"*B*")+COUNTIF(A1,"*C*")
補足
非常にすみません。文字数でなくて、文字(AかBかC)を取り出したかったのですが、その場合でもう一度ご教授いただけませんでしょうか。すみません。よろしくお願いします。
- mt2008
- ベストアンサー率52% (885/1701)
SUBSTITUTE関数を使用して、"A"、"B"、"C"を空白に置き換え(=削除)し、元の文字列との文字数の差を表示しては如何でしょう。 元の文字列がA1に入っているとして、B1セルにでも以下の式を入れて見てください。 =LEN(A1)-LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"A",""),"B",""),"C",""))
お礼
なるほどです。勉強になりました。ありがとうございました。
お礼
ありがとうございます。できました。たびたびお手数おかけしましてすみませんでした。